iPhone OpenGLES: текстуры занимают слишком много памяти, и программа вылетает с сигналом «0» - PullRequest
0 голосов
/ 05 августа 2009

Я не уверен, в чем проблема. Мое приложение работает на симуляторе нормально, но когда я пытаюсь запустить его на iPhone, оно падает во время отладки или без отладки с сигналом «0». Я использую Texture2D.m и OpenGLES2DView.m из примеров, предоставленных Apple. Я профилировал приложение на iPhone с инструментами, используя трассировщик памяти из библиотеки, и когда приложение умерло, конечная потребляемая память была около 60 МБ реальной и 90 + МБ виртуальной. Есть ли какая-то другая проблема или iPhone просто убивает приложение, потому что оно потребляет слишком много памяти? Если вам нужна какая-либо информация, пожалуйста, укажите ее, и я постараюсь ее предоставить. Я создаю тысячи текстур во время загрузки, поэтому потребление памяти так велико. На самом деле ничего не могу сделать с уменьшением количества загружаемых фотографий. Раньше я работал только на UIImage, но это дало мне очень низкие частоты кадров. Я прочитал на этом сайте, что я должен использовать OpenGLES для более высокой частоты кадров.

Также под вопрос, есть ли способ не использовать UIImage для загрузки png-файла, а затем использовать предоставленный класс Texture для создания текстуры для функций OpenGLES, чтобы использовать ее для рисования? Есть ли какая-то функция в OpenGLES, которая будет создавать текстуру прямо из файла png?

Ответы [ 2 ]

0 голосов
/ 18 июня 2010

Я попытался загрузить десять текстур размером 2048x2048 пикселей. Объем памяти текстур превышает 24 МБ, но iPhone3GS может загружать и отображать ее.

Я также рекомендую загрузчик текстур stb_image или SOIL. (библиотека stb_image используется библиотека SOIL.)

0 голосов
/ 05 августа 2009

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

Общее правило, которое я слышал, это то, что вы ограничены 24 МБ текстурной памяти.

нет ничего встроенного в OpenGLES, который загружается с диска, но вы можете использовать синтаксический анализатор файлов, например stb_image , чтобы сделать это самостоятельно.

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