LPD3DHAL_VALIDATETEXTURESTAGESTATECB回调函数 (d3dhal.h)

D3dValidateTextureStageState 函数返回硬件可执行当前状态中指定的混合操作的传递数。

语法

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

参数

unnamedParam1

pvtssd [in]

指向 D3DHAL_VALIDATETEXTURESTAGESTATEDATA 结构,该结构包含驱动程序确定并返回执行混合操作所需的传递数所需的信息。

返回值

D3dValidateTextureStageState 返回以下回调代码之一:

注解

支持纹理的 Microsoft Direct3D 驱动程序必须实现 D3dValidateTextureStageState

此函数的驱动程序实现必须评估与上下文关联的所有纹理阶段的当前纹理状态。 如果驱动程序的硬件可以执行指定的混合操作,则驱动程序应返回其硬件所需的状态数据的传递数。 如果硬件无法执行指定的混合操作,则驱动程序应在 pvtssd 处的 D3DHAL_VALIDATETEXTURESTAGESTATEDATA 结构的 ddrval 成员中返回以下错误代码之一:

错误代码 含义
D3DERR_CONFLICTINGTEXTUREFILTER 硬件不能同时执行三线性筛选和多文本。
D3DERR_TOOMANYOPERATIONS 硬件无法处理指定数量的操作。
D3DERR_UNSUPPORTEDALPHAARG 硬件不支持指定的 alpha 参数。
D3DERR_UNSUPPORTEDALPHAOPERATION 硬件不支持指定的 alpha 操作。
D3DERR_UNSUPPORTEDCOLORARG 硬件不支持指定的颜色参数。
D3DERR_UNSUPPORTEDCOLOROPERATION 硬件不支持指定的颜色操作。
D3DERR_UNSUPPORTEDFACTORVALUE 硬件不支持大于 1.0 的D3DTA_TFACTOR。
D3DERR_WRONGTEXTUREFORMAT 硬件不支持所选纹理格式的当前状态。

 

Direct3D 通过调用 IDirect3DDevice7::ValidateDevice 来调用 D3dValidateTextureStageState 以响应应用程序请求。 驱动程序返回的传递数将传播回应用程序,应用程序随后可以决定是继续使用当前状态进行呈现,还是必须更改混合操作才能更快地呈现或完全呈现。 驱动程序可以返回的通道数没有限制。

返回多个传递的驱动程序负责在呈现时对所有状态和基元数据正确执行传递。

可能失败 D3dValidateTextureStageState 的请求:

  • 在当前硬件上很少支持将漫射迭代值用作 ALG 或 BLENDDIFFUSE 操作。 许多部件只能在最后一个纹理操作阶段引入循环的颜色数据。

  • 尝试将每个阶段的纹理指定为其 arg1,而不是 arg2。

  • 尝试在任意多文本混合阶段使用漫射值或标量值。 对于许多卡片,这些值只能在最终纹理混合状态下使用;对于其他,仅在第一阶段。

  • 尝试在第一个纹理中执行更多操作,而不仅仅是将 alpha 复制到颜色通道或反转输入。 对于许多卡片,与第一个纹理关联的混合单元无法处理比这些操作更复杂的操作。 以下示例尝试仅使用第二个纹理的混合单元(如果可能)。 假定第一个单位在示例中处于其默认状态。

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • 为输出 alpha 执行比为颜色通道指定的操作更复杂或大不相同的操作不太可能受支持。

  • 尝试同时使用 D3DTA_TFACTOR 和 D3DTA_DIFFUSE。 某些硬件不支持此功能。

  • 尝试同时使用多个纹理和 MIP 映射的三线性筛选。 许多卡片不支持同时执行这些操作。 如果已为涉及多文本操作的纹理请求三线性筛选,但验证失败,请关闭三线性,然后重试。 在这种情况下,最好改为执行多通道呈现。

要求

要求
目标平台 桌面
标头 d3dhal.h (包括 D3dhal.h)

另请参阅

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2