正如标题所说,驱动程序是否会以某种方式优化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)帧缓冲区等有关。
答案 0 :(得分:0)
他们可以,但规格并不能保证。如果你想要它完成,你必须自己做。
答案 1 :(得分:0)
配置您的应用。这始终是测试您的假设的最佳方式。使用RenderDoc或任何其他GPU配置文件工具。那些通常显示多余的API调用,这会影响性能。但是拥有一种缓存状态的机制也是一种很好的做法。以下是John Carmack在Quake Arena中的表现。