


Settings like runtime memory format (RGBA, RGB, etc) and filtering (nearest, linear, etc) are per texture. Subdirectories are also useful to group images with related texture settings. This would cause multiple texture binds to render the game and pause menu instead of just one each. If the images were in a single directory that resulted in more than one page, each page could contain a mix of game and pause menu images. Eg, an application may want to place all the "game" images in a separate directory from the "pause menu" images, since these two sets of images are drawn serially: all the game images are drawn (one bind), then the pause menu is drawn on top (another bind). Otherwise, subdirectories can be used to segregate related images to minimize texture binds. If all images fit on a single page, no subdirectories should be used because with one page the app will only ever perform one texture bind. Images in the same directory go on the same set of pages. If the images in a directory don't fit on the max size of a single page, multiple pages will be used. For each directory of images TexturePacker encounters, it packs the images on to a larger texture, called a page. Given a directory, it recursively scans for image files. TexturePacker can pack all images for an application in one shot. Note that TexturePacker runs significantly faster with Java 1.7+, especially when packing hundreds of input images. Java -cp gdx.jar extensions/gdx-tools/gdx-tools.jar .texturepacker.TexturePacker inputDir Java -cp gdx.jar:extensions/gdx-tools/gdx-tools.jar .texturepacker.TexturePacker inputDir The TexturePacker class is in the gdx-tools project. It also uses brute force, packing with numerous heuristics at various sizes and then choosing the most efficient result. TexturePacker uses multiple packing algorithms but the most important is based on the maximal rectangles algorithm. It stores the locations of the smaller images so they are easily referenced by name in your application using the TextureAtlas class. libgdx has a TexturePacker class which is a command line application that packs many smaller images on to larger images. Binding the texture is relatively expensive, so it is ideal to store many smaller images on a larger image, bind the larger texture once, then draw portions of it many times. In OpenGL, a texture is bound, some drawing is done, another texture is bound, more drawing is done, etc.
