Поделиться через


Метод IDirect3D9::CheckDepthStencilMatch (d3d9.h)

Определяет, совместим ли формат трафарета глубины с форматом целевого объекта отрисовки в определенном режиме отображения.

Синтаксис

HRESULT CheckDepthStencilMatch(
  [in] UINT       Adapter,
  [in] D3DDEVTYPE DeviceType,
  [in] D3DFORMAT  AdapterFormat,
  [in] D3DFORMAT  RenderTargetFormat,
  [in] D3DFORMAT  DepthStencilFormat
);

Параметры

[in] Adapter

Тип: UINT

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

[in] DeviceType

Тип: D3DDEVTYPE

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

[in] AdapterFormat

Тип: D3DFORMAT

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

[in] RenderTargetFormat

Тип: D3DFORMAT

Член перечислимого типа D3DFORMAT , определяющий формат проверяемой поверхности целевого объекта отрисовки.

[in] DepthStencilFormat

Тип: D3DFORMAT

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

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

Тип: HRESULT

Если формат трафарета глубины совместим с форматом целевого объекта отрисовки в режиме отображения, этот метод возвращает D3D_OK. D3DERR_INVALIDCALL можно вернуть, если один или несколько параметров недопустимы. Если формат трафарета глубины несовместим с целевым объектом отрисовки в режиме отображения, этот метод возвращает D3DERR_NOTAVAILABLE.

Комментарии

Этот метод предоставляется для того, чтобы приложения могли работать с оборудованием, для которого требуется, чтобы определенные форматы глубины могли работать только с определенными форматами целевых объектов отрисовки.

Поведение этого метода было изменено для DirectX 8.1. Теперь этот метод обращает внимание на форматы трафаретов D24x8 и D32. В предыдущей версии предполагалось, что эти форматы всегда будут использоваться с 32- или 16-разрядными целевыми объектами отрисовки. Этот метод теперь возвращает D3D_OK для этих форматов только в том случае, если устройство может выполнять операции со смешанной глубиной.

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


BOOL IsDepthFormatOk(D3DFORMAT DepthFormat, 
                          D3DFORMAT AdapterFormat, 
                          D3DFORMAT BackBufferFormat)
{
    
    // Verify that the depth format exists
    HRESULT hr = pD3D->CheckDeviceFormat(D3DADAPTER_DEFAULT,
                                         D3DDEVTYPE_HAL,
                                         AdapterFormat,
                                         D3DUSAGE_DEPTHSTENCIL,
                                         D3DRTYPE_SURFACE,
                                         DepthFormat);
    
    if(FAILED(hr)) return FALSE;
    
    // Verify that the depth format is compatible
    hr = pD3D->CheckDepthStencilMatch(D3DADAPTER_DEFAULT,
                                      D3DDEVTYPE_HAL,
                                      AdapterFormat,
                                      BackBufferFormat,
                                      DepthFormat);
    
    return SUCCEEDED(hr);
    
}

Предыдущий вызов возвращает значение FALSE , если DepthFormat не может использоваться в сочетании с AdapterFormat и BackBufferFormat.

Требования

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

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

IDirect3D9