共用方式為


分隔頂點著色器的宣告和程式碼

在 DirectX 9.0 中,建立頂點著色器時,頂點著色器的宣告和程式碼不會再系結在一起。 支援頂點著色器之裝置的 DirectX 9.0 版本驅動程式必須處理宣告和程式碼物件的個別建立和管理。 不過,此 DirectX 9.0 驅動程式仍然必須能夠管理頂點著色器物件,該物件結合了宣告和程式碼,因為 DirectX 8.0 執行時間可能會要求建立這類頂點著色器物件。 如需詳細資訊,請參閱 頂點著色器

DirectX 9.0 執行時間會將控制碼從不同的控制碼集區指派給宣告和程式碼物件。 DirectX 9.0 驅動程式必須將這些控制碼儲存在不同的陣列中。 如同 DirectX 8.0 中的頂點著色器控制碼空間,DirectX 9.0 會與彈性頂點格式共用頂點著色器宣告控制碼空間, (FVF) 程式碼。 設定控制碼的位零表示頂點著色器宣告,否則為 FVF 程式碼。 如需詳細資訊,請參閱參考轉譯器 (refrast.cpp 範例程式碼) 。

DirectX 9.0 驅動程式在其 D3dDrawPrimitives2 函式中處理D3DDP2OP_CREATEVERTEXSHADERDECL作業程式碼時,會收到頂點著色器宣告。 D3DHAL_DP2CREATEVERTEXSHADERDECL結構和 D3DVERTEXELEMENT9 結構的陣列,這些結構會定義組成著色器宣告的頂點元素,並遵循命令資料流程中的作業程式碼。 如果實作 DirectX 9.0 驅動程式來處理著色器宣告的頂點元素,它必須支援所有可能使用的頂點資料。 也就是說,它必須支援所有 D3DDECLUSAGE 類型,以及這些類型 (使用索引值) 多個意義。 如需 D3DVERTEXELEMENT9 和 D3DDECLUSAGE 的詳細資訊,請參閱最新的 DirectX SDK 檔。

DirectX 9.0 驅動程式處理D3DDP2OP_CREATEVERTEXSHADERFUNC作業程式碼時,會收到頂點著色器程式碼。 D3DHAL_DP2CREATEVERTEXSHADERFUNC結構和頂點著色器程式碼會遵循命令資料流程中的作業程式碼。 如需個別著色器程式碼格式和組成每個著色器程式碼之標記的詳細資訊,請參閱 Direct3D 驅動程式著色器程式碼

DirectX 9.0 驅動程式會處理D3DDP2OP_SETVERTEXSHADERDECL和D3DDP2OP_SETVERTEXSHADERFUNC作業程式碼,讓頂點著色器組合器中的特定頂點著色器宣告和程式碼目前。 驅動程式會處理D3DDP2OP_DELETEVERTEXSHADERDECL和D3DDP2OP_DELETEVERTEXSHADERFUNC作業程式碼,以從頂點著色器組合器中移除這些頂點著色器宣告和程式碼。 針對上述每個作業程式碼,命令資料流程中會遵循 D3DHAL_DP2VERTEXSHADER 結構。 此結構只包含一個成員,可識別要設定或刪除之宣告或程式碼的控制碼。