Списки отображения OpenGL: для рисования 2D спрайтов?

Это хорошая или плохая идея использовать списки отображения для рисования текстурированных прямоугольников?

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

1 ответ

Для рисования одного спрайта нет реальной проблемы сделать это таким образом, но это также не дает никаких преимуществ, если вы используете glRotate/glTranslate для позиционирования спрайта. Так написано множество игр.

В моих играх я использую объект буфера вершин с GL_DYNAMIC_DRAW для хранения всех спрайтов, которые разделяют каждый атлас текстуры. Я обновляю позиции вертушек на CPU и отправляю всю партию за один вызов отрисовки. Я могу нарисовать еще много спрайтов, используя этот подход. Я мог бы делать позиции в вершинном шейдере, если бы мне нужно было рисовать еще больше.

Кроме того, имейте в виду, что OpenGL ES2 не поддерживает списки отображения, поэтому, если вы подумываете о портировании на устройство ES2, вам придется сделать это заново. (iPhone / iPad поддерживает ES1, но вы не можете смешивать и сопоставлять с ES2, вы можете использовать списки отображения ИЛИ шейдеры, но не оба).

Другие вопросы по тегам