效果技術語法 (Direct3D 10)
效果技術是以下列語法宣告。
technique10 技術名稱[ <注釋> ]
{
- pass *PassName* \[ <*Annotations* > \] {
- \[ *SetStateGroup*; \] \[ *SetStateGroup*; \] ... \[ *SetStateGroup*; \]
}
參數
-
技術10
-
必要關鍵字。
-
TechniqueName
-
選擇性。 可唯一識別效果技術名稱的 ASCII 字串。
-
注釋
-
[in] 選用。 一或多個使用者提供的資訊, (效果系統忽略的中繼資料) 。 如需語法,請參閱 注釋語法 (Direct3D 10) 。
-
通過
-
必要關鍵字。
-
PassName
-
[in] 選用。 可唯一識別傳遞名稱的 ASCII 字串。
-
SetStateGroup
-
[in]設定一或多個狀態群組,例如:
StateGroup Syntax 混色狀態 SetBlendState( arguments );
如需引數清單,請參閱 [OMSetBlendState] (/windows/desktop/api/D3D10/nf-d3d10-id3d10device-omsetblendstate) 。
深度樣板狀態 SetDepthStencilState( arguments );
如需引數清單,請參閱 OMSetDepthStencilState 。
轉譯器狀態 SetRasterizerState( arguments );
如需引數清單,請參閱 [RSSetState] (/windows/desktop/api/D3D10/nf-d3d10-id3d10device-rssetstate) 。
著色器狀態 SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );
或
SetXXXShader( CompileShader( NULL ) );
或
SetXXXShader( NULL );
SetXXXShader 是 SetVertexShader、SetGeometryShader或SetPixelShader (的其中一個,與VSSetShader、GSSetShader和PSSetShader) 類似。
效果狀態群組會列在 效果狀態中。
範例
此範例 (CubeMapGS 範例) 設定混合狀態。
BlendState NoBlend
{
BlendEnable[0] = False;
};
...
technique10
{
pass p2
{
...
SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
}
}
本範例會設定點陣化狀態,以線上框中轉譯物件。
RasterizerState rsWireframe { FillMode = WireFrame; };
...
technique10
{
pass p1
{
....
SetRasterizerState( rsWireframe );
}
}
本範例會從 BasicHLSL10 範例) 設定著色器狀態 (;使用頂點和圖元著色器。
technique10 RenderSceneWithTexture1Light
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, RenderSceneVS( 1, true, true ) ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, RenderScenePS( true ) ) );
}
}
相關主題