Основной подход при рисовании нескольких объектов на экране с использованием OpenGL - PullRequest
0 голосов
/ 14 ноября 2011

Мне было интересно, как делается базовая анимация в OpenGL. В моем коде я в настоящее время вставляю все вершины для 2 фигур в VBO. Затем я выбираю определенные вершины (например, вершины фигуры 1 и меняю их положение «x» на +1). Затем я перерисовываю изображение. Это правильный способ и идея манипулирования позицией нескольких объектов в Opengl?

1 Ответ

0 голосов
/ 14 ноября 2011

Ответ зависит от того, что представляют ваши вершины.Если вам нужно деформировать модель, которую они представляют, то да, вы должны изменить их координаты.Однако, если модель сохраняет свою форму, вы можете использовать матрицу просмотра модели для перемещения объекта.

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

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

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

Я предлагаю вам взглянуть на Красную книгу OpenGL главу 3 для получения дополнительной информации о матрицах.Остальная часть книги устарела с шейдерами и VBO, но, на мой взгляд, эта часть хороша.

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