在 D3D9 和 D3D8 声明之间映射

此表将 D3DVERTEXELEMENT9 声明的成员映射到 Direct3D 8 声明。

Direct3D 9 用法 Direct3D 9 使用情况索引 Direct3D 8
D3DDECLUSAGE_POSITION 0 D3DVSDE_POSITION
D3DDECLUSAGE_POSITION 1 D3DVSDE_POSITION2
D3DDECLUSAGE_NORMAL 0 D3DVSDE_NORMAL
D3DDECLUSAGE_NORMAL 1 D3DVSDE_NORMAL2
D3DDECLUSAGE_BLENDWEIGHT 0 D3DVSDE_BLENDWEIGHT
D3DDECLUSAGE_BLENDINDICES 0 D3DVSDE_BLENDINDICES
D3DDECLUSAGE_PSIZE 0 D3DVSDE_PSIZE
D3DDECLUSAGE_COLOR 0 D3DVSDE_DIFFUSE
D3DDECLUSAGE_COLOR 1 D3DVSDE_SPECULAR
D3DDECLUSAGE_TEXCOORD n D3DVSDE_TEXCOORDn

 

当声明与 Direct3D 7 驱动程序上的硬件顶点处理一起使用时,Direct3D 运行时会使用以下规则将其转换为 FVF:

  • 应仅使用流 0(从 MaxStreams 上限中明显看出)。
  • 顶点元素的顺序应与 FVF 位的顺序相同。
  • 不允许纹理坐标中的间隙。
  • 任何未描述表的顶点元素都不能转换为所有 Pre-DirectX 8 驱动程序的有效 FVF,因此不能在这些驱动程序上使用。
  • 如果设备未设置D3DPTEXTURECAPS_PROJECTED或D3DPTEXTURECAPS_CUBEMAP上限,则仅允许具有D3DDECLUSAGE_TEXCOORD的顶点元素D3DDECLTYPE_FLOAT2。

顶点声明