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