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 會呼叫 D3dValidateTextureStageState ,以透過呼叫 IDirect3DDevice7::ValidateDevice 回應應用程式要求。 驅動程式傳回的傳遞數會傳播回應用程式,然後決定它會使用目前狀態繼續轉譯,或者它必須變更混合作業以更快轉譯或完全轉譯。 驅動程式可以傳回的傳遞數目沒有限制。

傳回多個傳遞的驅動程式負責在轉譯時正確執行所有狀態和基本數據的傳遞。

D3dValidateTextureStageState 可能失敗的要求:

  • 使用擴散反覆運算值做為ARG,或目前硬體上支援BLENDDIFFUSE作業。 許多元件只能在最後一個紋理作業階段引進逐一查看的色彩數據。

  • 嘗試將每個階段的紋理指定為arg2的喜好設定為arg1。

  • 嘗試在任意多文本混合階段使用擴散或純量值。 對於許多卡片,這些值只能用於最終紋理混合狀態;對其他人而言,只在第一個階段。

  • 嘗試在第一個紋理中執行更多動作,不只是將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