顶点着色器

所有支持 DirectX 8.0 DDI 的驱动程序都必须支持新的 DP2 令牌D3DDP2OP_SETVERTEXSHADER即使硬件中不支持可编程顶点着色器。 这是因为D3DDP2OP_SETVERTEXSHADER是使用固定函数和可编程顶点处理时,传入顶点数据的 FVF 代码传达给驱动程序的机制。

D3DDP2OP_SETVERTEXSHADER可用于通知驱动程序当前可编程顶点着色器的句柄或用于固定函数顶点处理的顶点数据的 FVF 代码。 顶点着色器的句柄空间由运行时管理,包括有效的 FVF 代码。 因此,顶点着色器句柄可以引用以前通过 D3DDP2OP_CREATEVERTEXSHADER DP2 标记创建的可编程顶点着色器句柄,也可以引用要通过固定函数顶点处理处理的顶点格式的 FVF 代码。

不支持可编程顶点处理的硬件的驱动程序应处理D3DDP2OP_SETVERTEXSHADER以确定 FVF 代码 (,因此要对绑定到流 0 的顶点数据) 执行的处理。 在 (UM) 基元处理用户内存时,这一点尤为重要。 在这种情况下,确定提供的顶点数据的 FVF 代码的唯一方法是通过D3DDP2OP_SETVERTEXSHADER令牌。 如果将句柄的最小有效位设置为 1) (,则句柄为顶点着色器处理程序。 如果最小有效位 (0) 明确,则句柄是旧版 FVF 代码。

如果顶点缓冲区的 FVF 代码与D3DDP2OP_SETVERTEXSHADER指定的 FVF 代码冲突,驱动程序应忽略顶点缓冲区的 FVF 代码并继续。

DirectX 运行时保证仅 FVF 代码作为顶点着色器句柄传递到不支持可编程顶点处理的驱动程序。 但是,此类驱动程序应具有调试代码,以验证传递的 FVF 代码是否受支持。