IDirect3D9::CheckDeviceType 方法 (d3d9.h)

验证硬件加速设备类型是否可以在此适配器上使用。

语法

HRESULT CheckDeviceType(
  [in] UINT       Adapter,
  [in] D3DDEVTYPE DevType,
  [in] D3DFORMAT  AdapterFormat,
  [in] D3DFORMAT  BackBufferFormat,
  [in] BOOL       bWindowed
);

参数

[in] Adapter

类型: UINT

表示要枚举的显示适配器的序号。 D3DADAPTER_DEFAULT始终是主要显示适配器。 当此值等于或超过系统中显示适配器的数量时,此方法返回D3DERR_INVALIDCALL。

[in] DevType

类型: D3DDEVTYPE

D3DDEVTYPE 枚举类型的成员,指示要检查的设备类型。

[in] AdapterFormat

类型: D3DFORMAT

D3DFORMAT 枚举类型的成员,指示要检查其设备类型的适配器显示模式的格式。 例如,某些设备仅在每像素 16 位模式下运行。

[in] BackBufferFormat

类型: D3DFORMAT

后台缓冲区格式。 有关格式的详细信息,请参阅 D3DFORMAT。 此值必须是呈现器目标格式之一。 可以使用 GetAdapterDisplayMode 获取当前格式。

对于窗口化应用程序,如果硬件支持颜色转换,则后台缓冲区格式不需要匹配显示模式格式。 可能的后台缓冲区格式集受到约束,但运行时将允许向任何桌面格式呈现任何有效的后台缓冲区格式。 设备在桌面中可操作还有其他要求,因为设备通常不以每像素 8 位模式运行。

全屏应用程序无法执行颜色转换。

窗口模式允许D3DFMT_UNKNOWN。

[in] bWindowed

类型: BOOL

指示设备类型将在全屏模式还是窗口模式下使用的值。 如果设置为 TRUE,则对窗口化应用程序执行查询;否则,此值应设置为 FALSE

返回值

类型: HRESULT

如果设备可以在此适配器上使用,则返回D3D_OK。

如果适配器等于或超过系统中显示适配器的数量,则返回D3DERR_INVALIDCALL。 如果 CheckDeviceType 指定的设备不存在,则也会返回D3DERR_INVALIDCALL。

如果不支持请求的后台缓冲区格式,或者硬件加速不适用于指定格式,则返回D3DERR_NOTAVAILABLE。

备注

hal 设备类型需要硬件加速。 应用程序可以使用 CheckDeviceType 来确定是否存在支持 hal 设备所需的硬件和驱动程序。

全屏应用程序不应指定包含 alpha 通道的 DisplayFormat。 这将导致调用失败。 请注意,alpha 通道可以存在于后台缓冲区中,但这两种显示格式在所有其他方面必须相同。 例如,如果 DisplayFormat = D3DFMT_X1R5G5B5,则 BackBufferFormat 的有效值包括D3DFMT_X1R5G5B5和D3DFMT_A1R5G5B5但不包括D3DFMT_R5G6B5。

以下代码片段演示如何使用 CheckDeviceType 来测试某个设备类型是否可以在此适配器上使用。


if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT, 
                                        D3DDEVTYPE_HAL, 
                                        DisplayFormat, 
                                        BackBufferFormat, 
                                        bIsWindowed)))
    
     return S_OK;
// There is no HAL on this adapter using this render-target format. 
// Try again, using another format.

如果设备可以在具有指定图面格式的默认适配器上使用,则此代码将返回S_OK。

使用 CheckDeviceType 测试与显示格式不同的后台缓冲区之间的兼容性将返回适当的值。 这意味着调用将反映设备功能。 如果设备无法呈现为请求的后台缓冲区格式,调用仍将返回D3DERR_NOTAVAILABLE。 如果设备可以呈现为格式,但无法执行颜色转换演示文稿,则返回值也将D3DERR_NOTAVAILABLE。 应用程序可以通过调用 CheckDeviceFormatConversion 来发现演示文稿本身的硬件支持。 不会为颜色转换演示文稿本身提供软件仿真。

要求

   
目标平台 Windows
标头 d3d9.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

IDirect3D9