IDirect3DDevice9::ValidateDevice 方法 (d3d9helper.h)

报告设备在单个通道中呈现当前纹理混合操作和参数的能力。

语法

HRESULT ValidateDevice(
  [out, retval] DWORD *pNumPasses
);

参数

[out, retval] pNumPasses

类型: DWORD*

指向 DWORD 值的指针,用于填充通过多通道呈现完成所需效果所需的呈现传递数。

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是以下值之一:D3DERR_CONFLICTINGRENDERSTATE、D3DERR_CONFLICTINGTEXTUREFILTER、D3DERR_DEVICELOST、D3DERR_DRIVERINTERNALERROR、D3DERR_TOOMANYOPERATIONS、D3DERR_UNSUPPORTEDALPHAARG、D3DERR_UNSUPPORTEDALPHAOPERATION、D3DERR_UNSUPPORTEDCOLORARG、D3DERR_UNSUPPORTEDCOLOROPERATION、D3DERR_UNSUPPORTEDFACTORVALUE、D3DERR_UNSUPPORTEDTEXTUREFILTER、D3DERR_WRONGTEXTUREFORMAT、。

注解

仅当其他功能存在缺陷时,才应使用 IDirect3DDevice9::ValidateDevice 方法来验证方案。 例如,在多阶段纹理方案中,可以查询 D3DCAPS9 结构的 MaxTextureBlendStages 和 MaxSimultaneousTextures 成员,以确定是否可以在设备上进行多阶段纹理处理。

当前硬件不一定实现所有可能的操作和参数组合。 可以通过设置所需的混合操作,然后调用 IDirect3DDevice9::ValidateDevice 方法,确定是否可以使用给定参数执行特定的混合操作。

IDirect3DDevice9::ValidateDevice 方法使用当前呈现状态、纹理和纹理阶段状态在调用时执行验证。 调用后对这些因素的更改使上一个结果失效,并且必须在呈现场景之前再次调用 方法。

为获得最佳性能,请在初始化时调用 IDirect3DDevice9::ValidateDevice ;请勿在呈现循环中使用它。

在当前硬件上很少支持将分散迭代值用作参数或操作 (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) 。 大多数硬件只能在最后一个纹理操作阶段引入迭代的颜色数据。

尝试将每个阶段的纹理 (D3DTA_TEXTURE) 指定为第一个参数,而不是第二个参数。

许多卡不支持在任意纹理阶段使用漫射值或标量值。 通常,它们仅在第一个或最后一个纹理混合阶段可用。

许多卡没有与第一个纹理关联的混合单元,该单元能够将 alpha 复制到颜色通道或反转输入。 因此,如果可能,应用程序可能只需要使用第二个纹理阶段。 在此类硬件上,假定第一个单元处于其默认状态,第一个颜色参数设置为D3DTA_TEXTURE D3DTOP_SELECTARG1操作。

不太可能支持对输出 alpha 进行比颜色操作更复杂或与颜色操作大不相同的操作。

某些硬件不支持同时使用D3DTA_TFACTOR和D3DTA_DIFFUSE。

许多卡不支持同时使用多个纹理和 mipm 应用三线性筛选。 如果已请求对涉及多文本混合操作的纹理进行三线性筛选,并且验证失败,请关闭三线性筛选并重新验证。 在这种情况下,可能需要改为执行多通道呈现。

要求

要求
目标平台 Windows
标头 d3d9helper.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

IDirect3DDevice9

IDirect3DDevice9::GetTextureStageState

IDirect3DDevice9::SetTextureStageState