呈现效果 (Direct3D 10)

效果可用来存储信息,或使用一组状态进行呈现。 每种技术都指定顶点着色器、几何着色器、像素着色器、着色器状态、采样器和纹理状态以及其他管道状态。 因此,将状态组织为某个效果后,你可以通过创建并呈现该效果来封装该状态产生的呈现效果。

要准备待呈现的效果,需要执行几个步骤。 第一个步骤是编译,它依据 HLSL 语言语法和效果框架规则检查 HLSL 风格的代码。 你可以使用 API 调用从应用程序编译效果,也可以使用效果编译器实用工具脱机编译效果。 成功编译效果后,通过调用不同的(但非常相似)的 API 集来创建它。

创建效果后,还要执行另外两个步骤才能使用它。 首先,你必须使用许多用于设置状态的方法初始化效果状态值(效果变量的值)。 对于某些变量,可以在创建效果时执行此操作;对于另一些变量,每次应用程序调用呈现循环时,都必须更新这些变量。 设置效果变量后,你通过应用某项技术来告知运行时呈现该效果。 下面将进一步详细讨论这些主题。

当然,使用效果时有一些性能注意事项。 如果不使用效果,这些注意事项基本相同。 例如,尽量减少状态更改量,或对需要按频率更新的变量进行组织。 这些策略用于最大程度地减少需要从 CPU 发送到 GPU 的数据量,从而最大程度地减少潜在的同步问题。

效果 (Direct3D 10)