著色器類型
在效果中宣告著色器變數的語法已從 Direct3D 9 變更為 Direct3D 10。
Direct3D 10 的著色器類型
使用著色器類型語法,在 Direct3D 10) 中宣告效果傳遞 (的著色器變數:
SetPixelShader 編譯 ( 著色器Target、ShaderFunction ) ; SetGeometryShader 編譯 ( 著色器Target、ShaderFunction ) ; SetVertexShader 編譯 ( 著色器Target、ShaderFunction ) ; |
參數
項目 | 描述 |
---|---|
SetXXXShader |
建立著色器物件的 Direct3D API 呼叫。 可以是: SetPixelShader 或 SetGeometryShader 或 SetVertexShader。 |
ShaderTarget |
要編譯的著色器模型。 這適用于所有目標,包括所有 Direct3D 9 目標加上 著色器模型 4 目標:vs_4_0、gs_4_0和ps_4_0。 |
ShaderFunction |
包含著色器進入點函式名稱的 ASCII 字串;這是叫用著色器時開始執行的函式。 (...) 代表著色器引數;這些是傳遞至著色器建立 API 的相同引數: VSSetShader 或 GSSetShader 或 PSSetShader。 |
範例
以下是針對特定著色器模型編譯的頂點著色器和圖元著色器物件的範例。 在 Direct3D 10 範例中,沒有幾何著色器,因此指標會設定為 Null。
// Direct3D 10
technique10 Render
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
}
}
Direct3D 9 的著色器類型
使用著色器類型語法,在 Direct3D 9) 的效果傳遞 (內宣告著色器變數:
PixelShader = 編譯 ShaderTarget 著色器Function (...) ;VertexShader = 編譯 ShaderTarget ShaderFunction (...) ; |
參數
項目 | 描述 |
---|---|
XXXShader |
著色器變數,表示已編譯的著色器。 可以是: PixelShader 或 VertexShader。 |
ShaderTarget |
要編譯的 著色器模型 ;取決於著色器變數的類型。 |
ShaderFunction (...) |
包含著色器進入點函式名稱的 ASCII 字串;這是叫用著色器時開始執行的函式。 (...) 代表著色器引數;這些是傳遞至著色器建立 API 的相同引數: SetVertexShader 或 SetPixelShader。 |
範例
以下是針對特定著色器模型編譯的頂點著色器和圖元著色器物件的範例。
// Direct3D 9
technique RenderSceneWithTexture1Light
{
pass P0
{
VertexShader = compile vs_2_0 RenderSceneVS( 1, true, true );
PixelShader = compile ps_2_0 RenderScenePS( true );
}
}