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作業。 許多部分只能在最後一個紋理作業階段引進一次查看的色彩數據。
嘗試將每個階段的紋理指定為其arg1,以喜好設定為arg2。
嘗試在任意多重文字混合階段使用擴散或純量值。 對於許多卡片,這些值只能用於最終紋理混合狀態;對於其他人,只在第一個階段。
嘗試在第一個紋理中執行更多動作,不只是將Alpha複寫到色彩通道或反轉輸入。 對於許多卡片,與第一個紋理相關聯的混合單位無法比這些處理作業更複雜。 如果可以這麼做,下列範例會嘗試只使用第二個紋理的混合單位。 第一個單位假設為範例中的默認狀態。
dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE ); * dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
針對輸出 Alpha 執行比色彩色板所指定的作業較不複雜或大不相同,則較不受支持的作業。
嘗試同時使用D3DTA_TFACTOR和D3DTA_DIFFUSE。 某些硬體不支援此功能。
嘗試同時使用多個紋理和 MIP 對應的三線性篩選。 許多卡片同時不支援這些作業。 如果已針對涉及多重文字作業的紋理要求三線性篩選,且驗證失敗,請關閉三行線,然後再試一次。 在此情況下,最好改為執行 multipass 轉譯。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | d3dhal.h (包括 D3dhal.h) |