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 代码作为流零中顶点数据的格式。 支持可编程顶点处理的驱动程序必须检查句柄,以确定它是否引用以前使用 D3DDP2OP_CREATEVERTEXSHADER 或 FVF 代码创建的着色器,并采取适当的作。

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

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

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

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

要求

要求 价值
标头 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