在给定的绘制调用结束时,使用glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)
和/或glBindBuffer(GL_ARRAY_BUFFER, 0)
取消绑定对我来说似乎更干净。我喜欢确定什么都不应该是不应该的;但是,这会有很大的性能影响吗?
有人会认为这样做是“干净”的方式吗?或者我应该只是快速下降?草率的路线?
(是的,我知道绑定的缓冲区对象将被下一个要绑定在该目标上的缓冲区对象替换 - 无论是在这个还是下一个渲染更新中。是的,我可以进行性能测试但是快速的人为反应会很好。)
答案 0 :(得分:12)
我会在编码时解除清洁,然后在释放后将其全部优化。
好处是您可以重新组织代码而无需担心状态更改,但最终仍然优化了状态更改。而且你只会在实际优化上花费一小部分时间。
就性能影响而言,如果你有数千个额外的非绑定调用会有一些开销,但它不太可能是你的瓶颈。