Метод 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 |