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 |