效果 (Direct3D 10)

DirectX 效果是由 HLSL 编写的表达式和特定于效果框架的一些语法设置的管道状态的集合。 编译效果后,使用效果框架 API 呈现。 效果功能的范围可以从转换几何图形的顶点着色器和输出纯色的像素着色器到需要多个传递的呈现技术、使用图形管道的每个阶段以及处理着色器状态以及与可编程着色器无关的管道状态。

第一步是组织想要在效果中控制的状态。 这包括着色器状态(顶点、几何图形和像素着色器)、着色器使用的纹理和采样器状态,以及其他非可编程管道状态。 可以将内存中的效果创建为文本字符串,但通常,大小足够大,以便将效果状态存储在效果文件中(以 .fx 扩展名结尾的文本文件)。 若要使用效果,必须编译它(若要检查 HLSL 语法和效果框架语法),通过 API 调用初始化效果状态,并修改呈现循环以调用呈现 API。

效果将特定效果所需的所有呈现状态封装到称为技术的单一呈现函数中。 传递是包含呈现状态的技术子集。 若要实现多个传递呈现效果,在技术中实现一个或多个传递。 例如,假设你想要使用一组深度/模具缓冲区呈现一些几何图形,然后在上面绘制一些子画面。 可以在第一个传递中实现几何图形呈现,并在第二个传递中实现子画面绘制。 若要呈现效果,只需在呈现循环中呈现两个传递。 你可以在一个效果中实现任意数量的技术。 当然,技术数量越大,效果的编译时间越大。 利用此功能的一种方法是使用设计在不同硬件上运行的技术创建效果。 这允许应用程序根据检测到的硬件功能正常降级性能。

Direct3D 10 编程指南