3D图形批处理

6
很多网站/文章都在说“批处理!批处理!批处理!”。有人能解释一下相对于着色器而言,“批处理”代表什么吗?
换句话说,更改纹理和更改任意着色器变量是否意味着无法进行“批处理”?
2个回答

8

简单来说,尽可能少地调用API来绘制所需内容是最简单的方法。使用顶点数组或VBO(在现代API中甚至不是可选项),纹理图集以及避免需要状态更改都有助于实现这一目标。现代GPU可以在你转身准备下一个绘制调用的时间内绘制多少个三角形真的很惊人。


将这个应用到你的两个观点上,改变事物会否定批处理。改变纹理通常不会太糟糕,如果两个纹理都在VRAM中,但是不断改变着色器变量可能会变慢。 - ssube
谢谢。现代游戏引擎在批处理时如何处理变换矩阵(每个对象都不同)? - jameszhao00
当需要时,转换矩阵将被设置为着色器常量。这并不是一个大问题,因为很多场景通常都是世界。它是静态的,不需要变换。如果确实需要变换:在加载到顶点缓冲区之前,在加载数据时进行变换。 - Nils Pipenbrinck


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接