OpenGL幂等状态变化的影响

时间:2018-02-23 12:41:01

标签: c++ opengl shader vao

正如标题所说,驱动程序是否会以某种方式优化opengl状态机上的幂等操作?

例如,如果我将同一个缓冲区重新绑定到同一目标两次会怎么样?

glBindBuffer(GL_ARRAY_BUFFER, buf_id)
...
...
//No previous binding operation on the target, this should be idempotent 
//and ideally with no cost.
glBindBuffer(GL_ARRAY_BUFFER, buf_id)  

相同的问题与顶点数组对象(glBindVertexArray),着色器(glUseProgram)帧缓冲区等有关。

2 个答案:

答案 0 :(得分:0)

他们可以,但规格并不能保证。如果你想要它完成,你必须自己做。

答案 1 :(得分:0)

配置您的应用。这始终是测试您的假设的最佳方式。使用RenderDoc或任何其他GPU配置文件工具。那些通常显示多余的API调用,这会影响性能。但是拥有一种缓存状态的机制也是一种很好的做法。以下是John Carmack在Quake Arena中的表现。