轉換 Direct3D Fixed-Function狀態
如果使用者模式顯示驅動程式支援每個著色器類型 2.0 版或更新版本,Microsoft Direct3D 執行時間會將 Direct3D 固定函式狀態轉換為頂點或圖元著色器版本 2.0。 不過,執行時間不會轉換著色器版本。 例如,如果應用程式使用頂點或圖元著色器 1.1 版,則不論驅動程式是否支援著色器 2.0 版或更新版本,都會將版本 1.1 傳遞至使用者模式顯示驅動程式。 彈性頂點格式 (FVF) 程式碼會搭配固定函式處理使用。
DirectX 版本的轉換器功能
固定函式頂點和圖元著色器轉換器的運作方式取決於使用的 Microsoft DirectX 版本:
DirectX 9.0
固定函式頂點和圖元著色器轉換器可以使用 Windows Vista 顯示驅動程式模型。
預設會啟用轉換器。
使用固定函式頂點或圖元著色器轉換器時,會停用純裝置。 當應用程式要求純裝置時,Direct3D 執行時間會建立 HAL 裝置。
執行時間支援混合頂點處理。
軟體頂點處理一律使用固定函式頂點著色器轉換器。
當驅動程式支援頂點著色器 2.0 版或更新版本時,硬體頂點處理會使用固定函式頂點著色器轉換器。
當驅動程式支援圖元著色器 2.0 版或更新版本時,硬體頂點處理會使用固定函式圖元著色器轉換器。
當硬體啟用固定函式頂點著色器轉換器時,在混合頂點處理模式中,浮點數數目會設定為硬體可支援的專案。
DirectX 8.0 和更早版本
固定函式頂點和圖元著色器轉換器只能與 Windows Vista 顯示驅動程式模型搭配使用。
預設會啟用轉換器。
軟體頂點處理不支援固定函式頂點著色器轉換器。
當驅動程式支援頂點著色器 2.0 版或更新版本時,硬體頂點處理會使用固定函式頂點著色器轉換器。
當驅動程式支援圖元著色器 2.0 版或更新版本時,硬體頂點處理會使用固定函式圖元著色器轉換器。
注意 對於 DirectX 8.0 之前的 DirectX 版本,著色器對應程式碼的固定函式會在 Ddraw.dll中實作。
未使用User-Mode顯示驅動程式函式
啟用固定函式頂點著色器轉換器時,Direct3D 執行時間不會呼叫下列 使用者模式顯示驅動程式 函式:
未使用的轉譯狀態
下列轉譯狀態不會由 Direct3D 執行時間 (傳遞,或者,如果不小心傳遞,驅動程式可以在啟用固定函式頂點著色器轉換器時) 忽略:
D3DRS_VERTEXBLEND
D3DRS_INDEXEDVERTEXBLENDENABLE
D3DRS_TWEENFACTOR
D3DRS_FOGVERTEXMODE
D3DRS_LIGHTING
D3DRS_AMBIENT
D3DRS_COLORVERTEX
D3DRS_LOCALVIEWER
D3DRS_DIFFUSEMATERIALSOURCE
D3DRS_SPECULARMATERIALSOURCE
D3DRS_AMBIENTMATERIALSOURCE
D3DRS_EMISSIVEMATERIALSOURCE
D3DRS_POINTSCALEENABLE
D3DRS_POINTSCALE_A
D3DRS_POINTSCALE_B
D3DRS_POINTSCALE_C
D3DRS_NORMALIZENORMALS
忽略的紋理階段狀態
Direct3D 執行時間會將所有紋理階段狀態傳遞給驅動程式。 啟用固定函式圖元著色器轉換器時,驅動程式應該忽略下列紋理階段狀態:
D3DTSS_COLOROP
D3DTSS_COLORARG1
D3DTSS_COLORARG2
D3DTSS_ALPHAOP
D3DTSS_ALPHAARG1
D3DTSS_ALPHAARG2
D3DTSS_BUMPENVMAT00
D3DTSS_BUMPENVMAT01
D3DTSS_BUMPENVMAT10
D3DTSS_BUMPENVMAT11
D3DTSS_BUMPENVLSCALE
D3DTSS_BUMPENVLOFFSET
D3DTSS_COLORARG0
D3DTSS_ALPHAARG0
D3DTSS_RESULTARG
D3DTSS_CONSTANT