我使用OpenGL在幾個不同的對象中繪製數組。每個對象都繪製不同的數據,但對於每個對象,數據的容器/位置在程序的整個生命週期內保持不變。 OpenGL的告訴我,我有很多冗餘狀態的呼叫:冗餘狀態調用OpenGL
- glBindFramebuffer
- glUniformMatrix4fv
- glUniform4fv
- glBindRenderbuffer
。看到這個之後,我試着移動它們,以便在OpenGL的設置過程中只調用它們,但是數組並沒有被繪製。
這是目前的每次重繪什麼時間獲取調用示例:
glBindVertexArrayOES(_vertexArray);
glUseProgram(_program);
glUniformMatrix4fv(_mvpMatrixHandle,1,0,_mvpMatrix.m);
glUniform4fv(_colorHandle,1,colors);
glDrawArrays(GL_TRIANGLE_FAN,0,4);
問題:
由於變量的容器和位置我我傳遞給這些函數,每次爲給定對象繪製數組或者在開始時只繪製一次數組時,是否需要調用這些函數該節目的寧?如果是這樣,我該怎麼做?
如何消除這些我沒有明確調用的其他冗餘狀態調用?
太棒了,謝謝。這是一個很好的解釋。 –