我正在编写一个基于场景图的图形引擎,用于建模目的。我正在使用XNA 4。 在我读过的很多地方,渲染过程中应该最小化纹理变化(以及其他状态变化)(所以我必须按照材料等顺序排列我的基元)。
我在XNA 4中创建了一个小型测试应用程序,它使用单个纹理渲染数百个斯坦福兔子模型,然后切换2个不同的纹理。渲染时间没有差别(但我使用了小~100x100纹理)。
所以我的问题是:
感谢您提供任何帮助或链接!
答案 0 :(得分:8)
long 时间状态变化并不是真的很贵。 批次很贵。(状态变化需要新批次)。批处理基本上是对Draw*Primitives
函数的调用。
This PDF from nVidia详细解释。它还提供了减少批次数的想法。
批次是基于CPU的限制(不是GPU)。该PDF列出了“< 130 tris / batch”作为提交批次主导性能的点,并且GPU闲置等待更多批次(details)。它还表示,每1帧可获得批量,每1GHz CPU功率可达60 FPS。 (尽管PDF有点陈旧,但这些数字有点过时了。)
我的answer on the gamedev site类似问题应提供更多详情。 This one too