(Direct3D 11) 呈现效果

效果可用于存储信息,或使用一组状态呈现。 每种技术指定一组顶点着色器、外壳着色器、域着色器、几何着色器、像素着色器、计算着色器、着色器状态、采样器和纹理状态、无序访问视图状态和其他管道状态。 因此,将状态组织为效果后,可以通过创建和呈现效果来封装该状态产生的呈现效果。

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

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

当然,使用效果时需要注意性能。 如果不使用效果,这些注意事项大致相同。 将状态更改量降到最低以及按更新频率组织变量等操作。 这些策略用于最大程度地减少需要从 CPU 发送到 GPU 的数据量,从而最大程度地减少潜在的同步问题。

在本节中

主题 说明
编译效果
创作效果后,下一步是编译代码以检查语法问题。
创建效果
通过将编译后的效果字节代码加载到效果框架来创建效果。 与效果 10 不同,必须在创建效果之前编译该效果。 可以通过调用 D3DX11CreateEffectFromMemory 来创建加载到内存中的效果。
设置效果状态
某些效果常量只需初始化。 初始化后,效果状态将设置为整个呈现循环的设备。 每次调用呈现循环时,都需要更新其他变量。 下面显示了针对每种变量类型的效果变量设置效果变量的基本代码。
应用技术
声明并初始化常量、纹理和着色器状态后,唯一要做的就是在设备中设置效果状态。

Direct3D 11) (效果