Direct3D 10) (效果

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

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

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

Direct3D 10 编程指南