Перерисовать старый буферный вопрос - PullRequest
1 голос
/ 17 августа 2011

Моя основная сцена состоит из GL_POINTS в трехмерном пространстве.Я хотел бы нарисовать одну линию GL_LINES (2d оверлей) поверх сцены, когда пользователь перемещает палец по экрану, сохраняя нижележащее состояние 3D GL_POINTS.У меня проблемы с пониманием, если это возможно.Нужно ли мне 2 кадровых буфера?Как сохранить предыдущие данные буфера кадров GL_POINTS и повторно отрендерить их в последующих кадрах?Нужно ли смешивать кадровые буферы - один для слоя GL_LINE и один для данных GL_POINTS?

Я пытался только вызывать presentFramebuffer без вызова setFramebuffer, но при этом сохраняются все GL_LINES, извлеченные из предыдущих кадров - что мне не нужно.Как мне сохранить части кадрового буфера и удалить другие части?

1 Ответ

0 голосов
/ 04 января 2014
  1. вам не нужны 2 кадровых буфера вообще

    • кадровый буфер - ваша память экрана
    • просто рендеринг всего, что у вас есть
  2. если вы имеете в виду кадровый буфер VBO (VertexBufferObject), то они совсем не совпадают

    • если вы отображаете те же данные (вершины)
    • тогда вам нужно только 1x VBO
    • и дважды вызовите glDrawArrays / glDrawElements
    • один раз с GL_POINTS и один раз с GL_LINES / GL_LINE_LOOP или любым другим

    • если вы отображаете другие данные

    • тогда вам нужно 2x VBO
    • или если строк всего несколько, вы можете использовать вместо них glBegin / glEnd.
  3. если вам просто нужны отдельные области обзора, вы можете использовать

    • отсечение, изменение вида-порта, перезапись границ квадратами, ...
    • рисовать на текстуру, и так далее ... там много вариантов больше
...