轉換 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