Метод IDirect3D9::CheckDeviceType (d3d9helper.h)

Проверяет, можно ли использовать в этом адаптере тип устройства с аппаратным ускорением.

Синтаксис

HRESULT CheckDeviceType(
       UINT       iAdapter,
  [in] D3DDEVTYPE DevType,
       D3DFORMAT  DisplayFormat,
  [in] D3DFORMAT  BackBufferFormat,
  [in] BOOL       bWindowed
);

Параметры

iAdapter

Тип: UINT

Порядковый номер, обозначающий адаптер дисплея для перечисления. D3DADAPTER_DEFAULT всегда является основным видеоадаптером. Этот метод возвращает D3DERR_INVALIDCALL, если это значение равно или превышает число видеоадаптеров в системе.

[in] DevType

Тип: D3DDEVTYPE

Член перечисленного типа D3DDEVTYPE, указывающий тип устройства для проверка.

DisplayFormat

Тип: D3DFORMAT

Член перечисленного типа D3DFORMAT , указывающий формат режима отображения адаптера, для которого необходимо проверить тип устройства. Например, некоторые устройства будут работать только в режиме 16 бит на пиксель.

[in] BackBufferFormat

Тип: D3DFORMAT

Формат обратного буфера. Дополнительные сведения о форматах см . в разделе D3DFORMAT. Это значение должно быть одним из форматов целевой отрисовки. Для получения текущего формата можно использовать GetAdapterDisplayMode .

Для оконных приложений формат обратного буфера не должен соответствовать формату режима отображения, если оборудование поддерживает преобразование цвета. Набор возможных форматов обратного буфера ограничен, но среда выполнения позволит представить любой допустимый формат обратного буфера в любом формате рабочего стола. Существует дополнительное требование, чтобы устройство работало на рабочем столе, так как устройства обычно не работают в режиме 8 бит на пиксель.

Полноэкранные приложения не могут преобразовать цвет.

D3DFMT_UNKNOWN разрешено в оконной режиме.

[in] bWindowed

Тип: BOOL

Значение, указывающее, будет ли тип устройства использоваться в полноэкранном или оконном режиме. Если задано значение TRUE, запрос выполняется для оконных приложений; В противном случае это значение должно иметь значение FALSE.

Возвращаемое значение

Тип: HRESULT

Если устройство можно использовать на этом адаптере, возвращается D3D_OK.

D3DERR_INVALIDCALL возвращается, если значение Adapter равно или превышает число видеоадаптеров в системе. D3DERR_INVALIDCALL также возвращается, если CheckDeviceType указывает устройство, которое не существует.

D3DERR_NOTAVAILABLE возвращается, если запрошенный формат обратного буфера не поддерживается или аппаратное ускорение недоступно для указанных форматов.

Комментарии

Тип устройства Hal требует аппаратного ускорения. Приложения могут использовать CheckDeviceType для определения наличия необходимого оборудования и драйверов для поддержки устройства hal.

Полноэкранные приложения не должны указывать DisplayFormat, содержащий альфа-канал. Это приведет к сбою вызова. Обратите внимание, что альфа-канал может присутствовать в заднем буфере, но два формата отображения должны быть идентичными во всех остальных отношениях. Например, если DisplayFormat = D3DFMT_X1R5G5B5, допустимые значения для BackBufferFormat включают D3DFMT_X1R5G5B5 и D3DFMT_A1R5G5B5 но исключают D3DFMT_R5G6B5.

В следующем фрагменте кода показано, как можно использовать CheckDeviceType для проверки возможности использования определенного типа устройства в этом адаптере.


if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT, 
                                        D3DDEVTYPE_HAL, 
                                        DisplayFormat, 
                                        BackBufferFormat, 
                                        bIsWindowed)))
    
     return S_OK;
// There is no HAL on this adapter using this render-target format. 
// Try again, using another format.

Этот код возвращает S_OK, можно ли использовать устройство на адаптере по умолчанию с указанным форматом поверхности.

При использовании CheckDeviceType для проверки совместимости между задним буфером, который отличается от формата отображения, будут возвращены соответствующие значения. Это означает, что вызов будет отражать возможности устройства. Если устройству не удается выполнить отрисовку в запрошенном формате обратного буфера, вызов по-прежнему будет возвращать D3DERR_NOTAVAILABLE. Если устройство может выполнять отрисовку в формате, но не может выполнить презентацию с преобразованием цвета, возвращаемое значение также будет D3DERR_NOTAVAILABLE. Приложения могут обнаружить аппаратную поддержку самой презентации, вызвав CheckDeviceFormatConversion. Программная эмуляция для самой презентации с преобразованием цвета не будет предложена.

Требования

Требование Значение
Целевая платформа Windows
Header d3d9helper.h (включая D3D9.h)
Библиотека D3D9.lib

См. также раздел

IDirect3D9