2011-08-16 114 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. 如果您只是需要視不同的區域,那麼你可以使用

    • 裁剪,改變視口,由四邊形覆蓋的邊界,...
    • 平局的質感,等等...還有很多選項