Han*_*esh 15 opengl graphics textures
所以我分批渲染我的场景,尝试最小化状态变化.由于我的着色器通常需要多个纹理,因此我将其中一些纹理单元同时绑定到不同的纹理单元.其中一些纹理用于多个批次,因此甚至可以保持绑定.
现在我的问题是,在批处理中重新绑定我需要的所有纹理是否很好,即使它们中的一些可能已经绑定了?或者我应该检查哪些是绑定的,只绑定新的?glBindTexture有多贵?我正在使用着色器,将未使用的纹理绑定到着色器不会对其进行采样的纹理单元是不是很糟糕,还是应该解除它们的绑定?
我主要问"如何快速",而不是"如何".
编辑:如果我提供代码会有帮助吗?
Pat*_*ski 12
GPU编程的神圣规则是,与GPU交谈越少,她就越爱你.glBindTexture比CPU上的单一条件检查要贵得多,因此对于频繁的状态更改,我认为你应该看看是否需要将新的纹理索引传递给GPU.
答案很困难,因为任何强大的 GL 实现都应该使绑定已经绑定的纹理成为无操作作为优化。您应该尝试进行基准测试,看看设置条件是否会产生影响。
这同样适用于纹理单元中未使用的纹理,因为 GL 实现确实知道最终使用什么纹理单元,所以拥有未使用的纹理单元不应该影响性能(作为优化)。
归档时间: |
|
查看次数: |
5332 次 |
最近记录: |