IDirect3D9::CheckDepthStencilMatch 方法 (d3d9helper.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);
}
如果 DepthFormat 無法與 AdapterFormat 和 BackBufferFormat 搭配使用,則上述呼叫會傳回 FALSE 。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d9helper.h (包含 D3D9.h) |
程式庫 | D3D9.lib |