IDirect3DDevice9::ValidateDevice 方法 (d3d9.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。

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

要求

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

另请参阅

IDirect3DDevice9

IDirect3DDevice9::GetTextureStageState

IDirect3DDevice9::SetTextureStageState