Введение в программирование трехмерных игр с DX9

       

Возможности устройств


1.3.8. Возможности устройств

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

Это иллюстрирует следующий пример. Предположим, мы хотим проверить способно ли устройство осуществлять аппаратную обработку вершин (или, другими словами, поддерживает ли устройство аппаратную обработку преобразований и расчета освещения). Посмотрев описание структуры D3DCAPS9 в документации SDK, мы обнаружим, что бит D3DDEVCAPS_HWTRANSFORMANDLIGHT в члене данных D3DCAPS9::DevCaps указывает, поддерживает ли устройство аппаратную обработку преобразований и расчета освещенности. Следовательно наша проверка, подразумевая, что caps — это экземпляр структуры D3DCAPS9, будет выглядеть следующим образом:

bool supportsHardwareVertexProcessing;

// Если бит установлен, значит данная возможность // поддерживается устройством if(caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) { // Бит установлен - возможность поддерживается supportsHardwareVertexProcessing = true; } else { // Бит сброшен - возможность не поддерживается hardwareSupportsVertexProcessing = false; }

ПРИМЕЧАНИЕ

DevCaps означает «возможности устройства» (device capabilities).

ПРИМЕЧАНИЕ

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

ПРИМЕЧАНИЕ

Мы рекомендуем вам посмотреть описание структуры D3DCAPS9 в документации к SDK и изучить полный список возможностей устройств, поддерживаемых в Direct3D.

Содержание раздела