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

另請參閱

IDirect3D9