我在项目中使用XNA,在那些论坛上有时会看到这样的事实,即将效果交换为网格的成本相对较高,这让我感到惊讶,因为我认为交换效果只是复制替换着色器程序的一种情况以及适当的参数
我想知道是否有人可以确切解释此过程的成本?并在可能的情况下“相对”放置上下文?
例如,说我想使用一个短着色器来帮助拾取,我会:
- 更改每个对象上的效果,计算出唯一的颜色以识别它,并将其提供给着色器。
- 将所有对象绘制到内存中的渲染目标。
- 从目标获取颜色,并使用它来查找所选对象。
完成该过程所需的总时间中有哪些部分将用于交换着色器?我的直觉是,无论着色器多么简单,再次渲染场景都将比过程的任何其他部分慢一个数量级,那么为什么还要关注效果?