2016-01-17 3 views
0

Итак, в моей игре у меня более 32000 изображений (размер: 32x32). Как сохранить это количество изображений? Что может быть лучше: загрузить эти изображения в виде отдельных файлов или как один большой атлас текстуры?Libgdx texture atlas vs files

ответ

2

Когда вы загружаете текстуру (изображение) в своей игре, загружая текстуру в графический процессор.

Скажем, у вас есть 3200 изображений, и вы загружаете их отдельно, что означает 3200 текстур, загруженных на графический процессор. Это суровое и будет насыщать памятью.

Теперь позвольте мне объяснить, что такое TextureRegion

TextureRegion, занимает площадь от Texture в соответствии с размерами вы предоставляете, то преимущество, что это то, что вам не придется снова и снова загружать текстуры и Большим преимуществом является то, что вам не нужно загружать каждую текстуру на графический процессор, так как вы можете делать это напрямую, загружая одну большую текстуру и извлекая из нее субрегионы (TextureRegions).

Теперь, поскольку вы хотите использовать TextureRegions, будет трудно узнать размеры каждого дополнительного изображения, чтобы загрузить их из листа текстуры. Так что мы делаем, мы упаковываем Textures в более крупную текстуру, используя TexturePacker (приложение), которая затем создает файл .pack. Он упакует каждую текстуру в одно изображение и создаст файл .pack. Теперь, когда вы загружаете файл .pack, он загружается с использованием TextureAtlas класс Например, представьте себе файл пакета pokemon, в который есть все покемоны.

TextureAtlas pokemonFrontAtlas = new TextureAtlas(Gdx.files.internal("pokemon//pokemon.pack")); 

Теперь вы упакованы 3200 файлов с помощью Texture Packer и вы хотите загрузить изображение (Texture), который имеет имя файла как «SomePokemon».

Теперь, чтобы получить конкретную TextureRegion от него, вы

pokemonFrontAtlas.findRegion("SomePokemon") 

findRegion (имя String) возвращает вам textureRegion от TextureAtlas.

A TextureAtlas класс содержит коллекцию класса AtlasRegion, которая расширяет класс TextureRegion.

См Javadocs для более подробной информации TextureAtlas

+0

Окей, но я не понимаю одну вещь. Является ли весь этот атлас текстуры в моей памяти или просто частью, загруженной в текстуры ☺? – Dragomirus

+0

Когда вы загружаете атлас текстуры, он все еще загружается в память, но создается только одна текстура, но если вы загружаете много текстур, вы эффективно загружаете много текстур на gpu. – Sneh

+0

И есть ли другой способ упаковать мои текстуры в один файл и загружать только эти текстовые файлы в память, а затем в gpu, которые в настоящее время используются с помощью диспетчера активов? – Dragomirus

 Смежные вопросы

  • Нет связанных вопросов^_^