D3DHAL_DP2VERTEXSHADER 结构 (d3dhal.h)

仅限 DirectX 8.0 及更高版本。

D3DHAL_DP2VERTEXSHADER 结构根据 D3dDrawPrimitives2 (D3DDP2OP_SETVERTEXSHADER 或D3DDP2OP_DELETEVERTEXSHADER) 接收的操作码设置当前顶点着色器,或删除顶点着色器。

语法

typedef struct _D3DHAL_DP2VERTEXSHADER {
  DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;

成员

dwHandle

显示器的句柄。

注解

所有 DirectX 8.0 级别驱动程序都必须支持 D3DDP2OP_SETVERTEXSHADER 令牌,因为即使驱动程序不支持可编程顶点处理,也会发送该令牌。 但是,在这种情况下,着色器句柄始终是一个 FVF 代码,指示对顶点数据的固定函数处理。 驱动程序应使用存储在 dwHandle 成员中的 FVF 代码作为流 0 中的顶点数据的格式。 支持可编程顶点处理的驱动程序必须检查句柄,以确定它是否引用以前使用 D3DDP2OP_CREATEVERTEXSHADER 或 FVF 代码创建的着色器,并采取适当的操作。

像素着色器和顶点着色器是正交的。 因此,如果选择旧版 FVF 代码作为当前顶点着色器,则这并不表示旧像素处理。 若要将像素处理重置为可子编程模式,还必须将当前像素着色器设置为零。 驱动程序中应注意,在将顶点着色器设置为 FVF 代码时,仅将顶点处理状态重置为固定函数模式,而不是像素处理状态。

从固定函数顶点处理切换到可编程顶点处理时,应保留旧版呈现状态和矩阵的值。 如果在驱动程序收到 FVF 作为着色器句柄) 的D3DDP2OP_SETVERTEXSHADER (时,当从可编程到固定函数顶点处理发生切换时,应还原该保留状态。

在可编程着色器之间切换时,该着色器的定义中指定的值的任何常量寄存器都应设置为该值。 所有其他常量寄存器的值应保持不变。

对于D3DDP2OP_SETVERTEXSHADERDECL操作,运行时在 dwHandle 成员中指定旧的 FVF 代码或 DirectX 9.0 声明句柄。 运行时通过设置句柄的位 0 来指示 DirectX 9.0 声明句柄。 对于D3DDP2OP_SETVERTEXSHADERFUNC操作,运行时将 dwHandle 设置为零以指示固定函数管道。

要求

要求
Header d3dhal.h (包括 D3dhal.h)

另请参阅

D3DDP2OP_CREATEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADERDECL

D3DDP2OP_DELETEVERTEXSHADERFUNC

D3DDP2OP_SETSTREAMSOURCE

D3DDP2OP_SETSTREAMSOURCEUM

D3DDP2OP_SETVERTEXSHADER

D3DDP2OP_SETVERTEXSHADERDECL

D3DDP2OP_SETVERTEXSHADERFUNC

D3DHAL_DP2CREATEVERTEXSHADER

D3DHAL_DP2SETVERTEXSHADERCONST

D3dDrawPrimitives2