Использование памяти текстуры Cocos2d - PullRequest
0 голосов
/ 03 января 2012

Я использую cocos2d и у меня есть спрайт-лист 1024x1024.

Я загружаю текстуру в формате RGBA4444, и она потребляет 2 МБ, помеченные как 'gfxAllocateTextureLevel'.

Затем, когда я создаю CCSprites из таблицы спрайтов, она мгновенно потребляет дополнительные 4 МБ памяти, помеченной как glsmLoadTextureLevelBuffer.1005 *

Итак, всего 6 МБ, что довольно много по сравнению с моим приложением.Это ожидается?Нужно ли создавать такой буфер для каждой таблицы спрайтов или даже CCSpriteBatchNode?Спасибо.

Ответы [ 2 ]

1 голос
/ 03 января 2012

OpelGLES1.1 Spec состояния:

«GL сохраняет полученную текстуру с разрешением внутренних компонентов по своему выбору»

=> Графический процессор / драйвер может преобразовывать ваши пиксели в размере, необходимом для графического процессора (графический процессор может работать только с определенными форматами пикселей, поэтому все, что не так, будет преобразовано в один), поэтому я думаю, что вы иметь 2 МБ RGBA4444 и 4 МБ RGBA8888 того же листа спрайта.

0 голосов
/ 21 мая 2013

У меня такая же проблема!Я загружаю текстуру в формате RGBA8888, и она потребляет 4 МБ, помеченные как 'gfxAllocateTextureLevel'.

Затем, когда я создаю CCSprites из таблицы спрайтов, она мгновенно потребляет дополнительные 4 МБ памяти, помеченной как glsmLoadTextureLevelBuffer.

...