我使用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);
问题:
由于变量的容器和位置我我传递给这些函数,每次为给定对象绘制数组或者在开始时只绘制一次数组时,是否需要调用这些函数该节目的宁?如果是这样,我该怎么做?
如何消除这些我没有明确调用的其他冗余状态调用?
太棒了,谢谢。这是一个很好的解释。 –