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)
Library D3D9.lib

另请参阅

IDirect3D9