2011-08-16 54 views
1

我的主场景由三维空间中的GL_POINTS组成。我想要做的是能够在场景顶部绘制单个GL_LINES行(2d覆盖图),因为用户在屏幕上移动手指时保持3D GL_POINTS下层状态。我无法理解这是否可行。我需要2个帧缓冲器吗?如何保存GL_POINTS的先前帧缓冲区数据并在后续帧中重新渲染?我是否需要混合帧缓冲区 - 一个用于GL_LINE层,一个用于GL_POINTS数据?重绘旧缓冲区问题

我试图只调用presentFramebuffer而不调用setFramebuffer,但是保留了从前一帧绘制的每个GL_LINES - 我不想要。如何保留帧缓冲区的一部分并删除其他部分?

回答

0
  1. 你根本就不

    • 帧缓冲器需要一个2帧缓冲器是屏幕内存
    • 只呈现在一个所有的东西你有
  2. 如果你的意思是由帧缓冲VBO(VertexBufferObject),那么他们是不一样的所有

    • 如果您呈现相同的数据(顶点)
    • ,那么你只需要1个VBO
    • 与GL_LINES/GL_LINE_LOOP或任何

    • 调用调用glDrawArrays/glDrawElements两次

    • 一旦与GL_POINTS和一次如果你渲染不同的数据

    • 那么你需要2个VBO
    • 或者如果只有几条线,那么你仍然可以使用glBegin/glEnd代替它们。
  3. 如果您只是需要视不同的区域,那么你可以使用

    • 裁剪,改变视口,由四边形覆盖的边界,...
    • 平局的质感,等等...还有很多选项