Сколько 1024 * 1024 PNG можно загрузить в OpenGL для iPhone без сбоя приложения на устройстве ?? - PullRequest
1 голос
/ 18 декабря 2009

Примерно каково максимальное количество 1024x1024 32-битных .pngs, которые можно одновременно загружать с помощью openGL в iphone?

А .pvr? гораздо большее число?

Если мне нужно огромное количество текстур в моей игре, полезно ли продолжать загружать и вызывать dealloc, чтобы не перегружать память всеми текстурами?

Ответы [ 3 ]

5 голосов
/ 18 декабря 2009

PVRTC может использоваться с 2 или 4 битами на тексель, что является огромной экономией. Невозможно дать конкретное число для количества памяти текстур, которое безопасно использовать. Apple действительно бросила мяч на этом, см. это и это статьи от Ноэля Лописа.

Также помните, что если вы используете mip-карты, это занимает на 33% больше памяти (каждый mip-карта составляет 1/4 от уровня выше => 1 + 1/4 + 1/16 ... ~ = 1,33). *

РЕДАКТИРОВАТЬ: Еще одна заметка PVRTC не работает, если у вас есть очень четкая альфа-маска, которую вы хотите сохранить.

5 голосов
/ 18 декабря 2009

Вы должны загружать текстуры по мере необходимости и выгружать неиспользуемые текстуры, когда ваше приложение получает предупреждение о нехватке памяти.

Чтобы ответить на вопрос о максимальном объеме памяти, кажется, что iPhone 2G / 3G выдает предупреждения о памяти около отметки 20 МБ, а iPhone 3GS начинает выдавать предупреждения около 128 МБ.

1024 * 1024 * 32 bits = 4 MB

Итак, около 5 текстур загружено, прежде чем вы получите предупреждение. 1024 x 1024 довольно велико (это самое большое, что вы можете иметь AFAIK) для текстуры, поэтому, если возможно, вам следует уменьшить их размер .

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

2 голосов
/ 18 декабря 2009

Я надеюсь, что когда вы говорите "и вызываете dealloc", вы имеете в виду "и освобождаете эти объекты с -release", потому что вы никогда не должны вызывать -dealloc для любого объекта самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...