О быстрой замене текстур для рендеринга openGLES - PullRequest
1 голос
/ 26 ноября 2010

в моем контексте openglES я хочу анимировать одну текстуру, но данные для этой текстуры могут изменяться много раз в секунду (как видеокадр, но более медленный). идея состоит в том, чтобы анимировать простую поверхность прямоугольника в моей трехмерной сцене.

На мой взгляд, быстрый способ реализовать это состоит в том, чтобы загрузить несколько следующих текстур в память (путем загрузки в CGImageREF в другом потоке) и вставить данные в мою текстуру непосредственно перед использованием.

Вы можете подумать об этом?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 27 ноября 2010

Вы можете увидеть этот код образца потока покрытия . Он будет хранить текстуры в контейнере (массив или словарь) и извлекать эти текстуры по мере необходимости. Но имейте это в виду, текстура будет занимать физическую память. Если ваша текстура 256x256, она будет занимать 256x256x4 байта (256 КБ). Если вы храните слишком много текстур, легко получить предупреждение о памяти iOS.

1 голос
/ 27 ноября 2010

Вы можете использовать подход, аналогичный обработке UITableView для представлений строк, в котором вы управляете очередью из некоторого числа повторно используемых текстур. Когда вам нужны кадры, удалите следующую текстуру из этой очереди, загрузите в нее новое изображение и добавьте его в другую очередь загруженных текстур, готовых для отображения в соответствующее время. После замены кадра снова поместите ранее отображенную текстуру в очередь, чтобы ее можно было использовать позже.

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