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 |