Можно ли рисовать несколько разных текстур в openGL для iPhone одним вызовом? - PullRequest
1 голос
/ 27 августа 2009

У меня есть эта игра с различными текстурами. Всякий раз, когда я рисую текстуру, я связываю ее и рисую.

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

Производительность моей игры увеличится при этом?

Ответы [ 2 ]

3 голосов
/ 27 августа 2009

Я полагаю, что вы выиграете от использования текстурного атласа , одной гигантской текстуры, содержащей все ваши меньшие. Для OpenGL ES на iPhone Apple рекомендует поместить все вершины, которые можно нарисовать за один раз, в объект буфера вершин (VBO) и чередовать вершины, нормаль, цвет и информация текстуры в этом буфере (в этом порядке). Обратите внимание, что сам VBO не дает вам значительного прироста производительности по сравнению со стандартным массивом на оригинальных iPhone, но 3GS имеет аппаратную поддержку VBO.

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

Другая область, на которую вы можете обратить внимание, - это уменьшение размера вашей геометрии. Переходя от GLfloat к GLshort для получения моих вершин и данных о нормальных координатах, я увидел более чем 30-процентное улучшение скорости рендеринга OpenGL ES на iPhone 3G.

1 голос
/ 27 августа 2009

ТБХ, вам лучше делать это с отдельными розыгрышами. Производительность вряд ли будет заметно затронута.

Могут быть способы сделать это путем индексации кусочков объемной текстуры (или массива текстур), но для этого вам понадобится 3GS, и он не будет работать на старом iPhone. Я также сомневаюсь, что вы добьетесь заметного улучшения производительности, сделав это.

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