Как использовать разные независимые перекрывающиеся слои в opengl? - PullRequest
2 голосов
/ 30 августа 2011

Я хочу знать, возможно ли иметь несколько слоев, которыми можно манипулировать независимо и отображать перекрывающимся образом.

Вот что я хочу сделать. Я реализую графический интерфейс Turtle. Я хочу оживить движение черепахи. Мне было интересно, смогу ли я иметь всю графику в одном слое и черепаху (которую я представляю, используя маленький равнобедренный треугольник) отдельно в другом слое, чтобы я мог стереть черепаху, очистив этот слой и не затрагивая графический слой перерисовать черепаху в другом месте / ориентации на плоскости черепахи.

1 Ответ

2 голосов
/ 30 августа 2011

OpenGL не является графом сцены.

OpenGL (как правило) не является классическим 2D кадровым буфером, где вы хотите попытаться минимизировать перерисовки. С OpenGL вы, как правило, будете перерисовывать всю сцену каждый кадр после очистки буферов глубины и цвета.

У вас есть несколько вариантов:

1) Отключите проверку буфера глубины / глубины и визуализируйте ваши слои обратно.

2) Убедитесь, что у каждого из ваших слоев есть соответствующая координата Z, и визуализируйте их в любом порядке, позволяя буферу Z позаботиться о правильном наложении слоев. Не будет работать, если ваши слои прозрачны.

3) Превратите ваш путь черепахи в текстуру любым способом, который вы чувствуете как поддержку (glCopyPixels(), PBOs, FBOs, cairo ). Рендеринг текстурированного четырехугольника размером с экран и черепаха сверху.

4) Перерисовывайте свой путь черепахи полностью в каждом кадре, сначала самая старая точка. Не должно быть медленным, если у вас нет количества строк в сотнях тысяч. Обязательно используйте массивы вершин или VBO.

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