Direct3D 11) (效果

DirectX 效果是管道状态的集合,由用 HLSL 编写的表达式和一些特定于效果框架的语法设置。

编译效果后,使用效果框架 API 进行呈现。 效果功能的范围可以从转换几何图形的顶点着色器和输出纯色的像素着色器等简单内容,到需要多次传递、使用图形管道的每个阶段以及操作着色器状态以及与可编程着色器不关联的管道状态的呈现技术。

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

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

一组技术可以分组到使用语法“fxgroup”) 的组中 (。 可以以任何方式对技术进行分组。 例如,可以创建多个组,每个材料一个;每种材料都可以为每个硬件级别提供一种技术;每种技术都有一组通道,用于定义特定硬件上的材料。

在本节中

主题 说明
组织效果中的状态
使用 Direct3D 11 时,某些管道阶段的效果状态按结构进行组织。
效果系统接口
效果系统定义了多个用于管理效果状态的接口。
专用接口
ID3DX11EffectVariable 有许多方法可将接口强制转换为所需的特定接口类型。
效果中的接口和类
在 Effects 11 中使用类和接口的方法有很多。
呈现效果
效果可用于存储信息或使用一组状态呈现。
克隆效果
克隆效果会创建效果的第二个几乎完全相同的副本。
流出语法
使用流出流的几何着色器使用特定语法声明。
效果 10 和效果 11 之间的差异
本主题介绍效果 10 和效果 11 之间的差异。

Direct3D 11 编程指南