Обработка данных вершин (Direct3D 9)

Интерфейс IDirect3DDevice9 поддерживает обработку вершин как в программном обеспечении, так и в оборудовании. Как правило, возможности устройств для обработки программного обеспечения и аппаратной вершины не идентичны. Возможности программного обеспечения фиксированы, а аппаратные возможности могут варьироваться в зависимости от адаптера дисплея и драйвера.

Следующие флаги управляют поведением обработки вершин для аппаратного уровня абстракции (HAL) и эталонных устройств.

  • D3DCREATE_SOFTWARE_VERTEXPROCESSING
  • D3DCREATE_HARDWARE_VERTEXPROCESSING
  • D3DCREATE_MIXED_VERTEXPROCESSING

Укажите один из флагов поведения обработки вершин при вызове IDirect3D9::CreateDevice. Флаг смешанного режима позволяет устройству выполнять как программную, так и аппаратную обработку вершин. В любое время можно задать только один флаг обработки вершин для устройства. Обратите внимание, что при создании чистого устройства (D3DCREATE_PUREDEVICE) необходимо задать флаг D3DCREATE_HARDWARE_VERTEXPROCESSING.

Чтобы избежать возможности обработки двойной вершины на одном устройстве, можно запрашивать только аппаратные возможности обработки вершин во время выполнения. Возможности обработки вершин программного обеспечения исправлены и не могут запрашиваться во время выполнения.

Член VertexProcessingCaps структуры D3DCAPS9 определяет способности устройства по аппаратной обработке вершин.

Для обработки вершин программного обеспечения поддерживаются следующие возможности.

  • элемент D3DVTXPCAPS_DIRECTIONALLIGHTS группы D3DVTXPCAPS
  • элемент D3DVTXPCAPS_LOCALVIEWER структуры D3DVTXPCAPS
  • компонент D3DVTXPCAPS_MATERIALSOURCE7 из D3DVTXPCAPS
  • элемент D3DVTXPCAPS_POSITIONALLIGHTS из D3DVTXPCAPS
  • член D3DVTXPCAPS_TEXGEN из D3DVTXPCAPS
  • член D3DVTXPCAPS_TWEENING D3DVTXPCAPS

Кроме того, в следующей таблице перечислены значения, заданные для элементов структуры D3DCAPS9 устройства в режиме обработки вершин программного обеспечения.

Член Возможности обработки вершин программного обеспечения
MaxActiveLights Неограниченный
MaxUserClipPlanes 6
MaxVertexBlendMatrices 4
MaxStreams 16
MaxVertexIndex 0xFFFFFFFF

 

Как правило, любое приложение, ограниченное обработкой вершин, должно использовать устройство типа HAL. Обработка вершин программного обеспечения обеспечивает гарантированный набор возможностей обработки вершин, включая неограниченное количество огней и полную поддержку программируемых шейдеров вершин. Вы можете переключаться между программной и аппаратной обработкой вершин в любое время при использовании устройства HAL (который является единственным типом устройства, поддерживающим обработку вершин оборудования и программного обеспечения). Единственное требование заключается в том, что буферы вершин, используемые для обработки вершин программного обеспечения, должны быть выделены в системной памяти.

Direct3D устройства