可能重複:
How does glBufferData know which VBO to work on?爲什麼需要連續多次綁定一個緩衝區?
我在示例代碼中發現(在O'Reilly出版)兩個維也納組織和渲染緩衝區做到這一點不止一次的結合。這背後的推理是什麼?例如,你可能有這樣的一個OpenGL程序的頂部:
glGenBuffers(1, &m_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
,然後做圖紙之前,你再這樣做:
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
glVertexPointer(3, GL_FLOAT, sizeof(Vertex), 0);
//on to the drawing routine
刪除其中任一原因繪畫不出現,爲什麼它需要綁定兩次?
又如第一,我們這樣做:
// Create & bind the color buffer so that the caller can allocate its space.
glGenRenderbuffersOES(1, &m_colorRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_colorRenderbuffer);
然後,創造頂點,以後等我們後來我們再次做到這一點:
// Bind the color buffer for rendering.
glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_colorRenderbuffer);
這不是真的重複,而是回答一個問題,回答另一個問題。 – datenwolf
如果它不是重複的,它不應該投票結束重複。你也不能假定提問者看到兩個不同問題之間的直接關係。 – johnbakers
你注意到你自己,如果你在執行繪製操作之前省略了綁定緩衝區,事情就不會起作用。所以關於綁定過程的一些事情使得OpenGL知道要使用什麼。恕我直言,這是一個非常簡單明顯的心理聯繫。結束投票是因爲兩個問題中的一個是多餘的,其中一個問題應該關閉。 – datenwolf