(Direct3D 9) 处理顶点数据
IDirect3DDevice9 接口支持软件和硬件中的顶点处理。 通常,用于软件和硬件顶点处理的设备功能并不相同。 硬件功能是可变的,具体取决于显示适配器和驱动程序,而软件功能是固定的。
以下标志控制硬件抽象层 (HAL) 和参考设备的顶点处理行为。
- D3DCREATE_SOFTWARE_VERTEXPROCESSING
- D3DCREATE_HARDWARE_VERTEXPROCESSING
- D3DCREATE_MIXED_VERTEXPROCESSING
在调用 IDirect3D9::CreateDevice 时指定顶点处理行为标志之一。 混合模式标志使设备能够执行软件和硬件顶点处理。 一次只能为设备设置一个顶点处理标志。 请注意,创建纯设备 (D3DCREATE_PUREDEVICE) 时,需要设置D3DCREATE_HARDWARE_VERTEXPROCESSING标志。
为了避免在单个设备上使用双顶点处理功能,只能在运行时查询硬件顶点处理功能。 软件顶点处理功能是固定的,无法在运行时查询。
D3DCAPS9 结构的 VertexProcessingCaps 成员决定了设备的硬件顶点处理能力。
对于软件顶点处理,支持以下功能。
- D3DVTXPCAPS 的D3DVTXPCAPS_DIRECTIONALLIGHTS成员
- D3DVTXPCAPS 的D3DVTXPCAPS_LOCALVIEWER成员
- D3DVTXPCAPS 的D3DVTXPCAPS_MATERIALSOURCE7成员
- D3DVTXPCAPS 的D3DVTXPCAPS_POSITIONALLIGHTS成员
- D3DVTXPCAPS 的D3DVTXPCAPS_TEXGEN成员
- D3DVTXPCAPS 的D3DVTXPCAPS_TWEENING成员
此外,下表列出了为处于软件顶点处理模式的设备 D3DCAPS9 结构的成员设置的值。
成员 | 软件顶点处理功能 |
---|---|
MaxActiveLights | 无限制 |
MaxUserClipPlanes | 6 |
MaxVertexBlendMatrices | 4 |
MaxStreams | 16 |
MaxVertexIndex | 0xFFFFFFFF |
通常,任何处于顶点处理绑定的应用程序都应使用 HAL 设备。 软件顶点处理提供一组有保证的顶点处理功能,包括无限数量的光和对可编程顶点着色器的完全支持。 使用 HAL 设备时,可以随时在软件和硬件顶点处理之间切换 (这是唯一同时支持硬件和软件顶点处理) 的设备类型。 唯一的要求是在系统内存中分配用于软件顶点处理的顶点缓冲区。
相关主题