Самый эффективный способ использовать OpenGL для 2d игр? - PullRequest
3 голосов
/ 19 сентября 2011

У меня есть игровой движок, который я написал для iPhone, который использует OpenGL для рисования 2d спрайтов, фонов и т. Д. Я мог бы использовать Cocos2d, но я думал, что узнаю больше, написав свой собственный. Это работает и кажется довольно эффективным, но, запустив мою игру через профилировщик Instruments OpenGL, он возвращается с большим количеством советов о том, как сделать что-то лучше, говоря о VBO и тому подобном.

Если предположить, что моя игра просто рисует много 2-х квадов с различными текстурами, какой самый эффективный способ сделать это? Быстрее нарисовать 2 треугольника или один квад? Разве VBO не является излишним для этого или они действительно принесут улучшение производительности?

1 Ответ

2 голосов
/ 19 сентября 2011

Хорошо, я не знаю о реальном приросте производительности для простых квадроциклов.Но если ваша «геометрия» статична, вы получаете больше всего из списков отображения.Они довольно просты в использовании и практически не требуют изменения кода.

Важно отметить, что наиболее дорогой операцией является переключение контекста.Это что-то от связывания текстуры (очень дорого) до изменения цвета (не так дорого).Поэтому лучшее, что вы можете сделать, - это рендерить все спрайты, используя одну текстуру за один раз.

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

Вы также должны потратить некоторое время на код, который предотвращает попытки рендеринга вещей, которые не видны.(Сравните это с решением DL для всего уровня.)

...