(Direct3D 9) 处理顶点数据

IDirect3DDevice9 接口支持软件和硬件中的顶点处理。 通常,用于软件和硬件顶点处理的设备功能并不相同。 硬件功能是可变的,具体取决于显示适配器和驱动程序,而软件功能是固定的。

以下标志控制硬件抽象层 (HAL) 和参考设备的顶点处理行为。

  • D3DCREATE_SOFTWARE_VERTEXPROCESSING
  • D3DCREATE_HARDWARE_VERTEXPROCESSING
  • D3DCREATE_MIXED_VERTEXPROCESSING

在调用 IDirect3D9::CreateDevice 时指定顶点处理行为标志之一。 混合模式标志使设备能够执行软件和硬件顶点处理。 一次只能为设备设置一个顶点处理标志。 请注意,创建纯设备 (D3DCREATE_PUREDEVICE) 时,需要设置D3DCREATE_HARDWARE_VERTEXPROCESSING标志。

为了避免在单个设备上使用双顶点处理功能,只能在运行时查询硬件顶点处理功能。 软件顶点处理功能是固定的,无法在运行时查询。

D3DCAPS9 结构的 VertexProcessingCaps 成员决定了设备的硬件顶点处理能力。

对于软件顶点处理,支持以下功能。

此外,下表列出了为处于软件顶点处理模式的设备 D3DCAPS9 结构的成员设置的值。

成员 软件顶点处理功能
MaxActiveLights 无限制
MaxUserClipPlanes 6
MaxVertexBlendMatrices 4
MaxStreams 16
MaxVertexIndex 0xFFFFFFFF

 

通常,任何处于顶点处理绑定的应用程序都应使用 HAL 设备。 软件顶点处理提供一组有保证的顶点处理功能,包括无限数量的光和对可编程顶点着色器的完全支持。 使用 HAL 设备时,可以随时在软件和硬件顶点处理之间切换 (这是唯一同时支持硬件和软件顶点处理) 的设备类型。 唯一的要求是在系统内存中分配用于软件顶点处理的顶点缓冲区。

Direct3D 设备