共用方式為


效果技術語法 (Direct3D 11)

效果技術會使用本節所述的語法來宣告。

TechniqueVersion 技術名稱[ <注釋> ]

{

pass *PassName* \[ <*Annotations* > \] {
\[ *SetStateGroup*; \] \[ *SetStateGroup*; \] ... \[ *SetStateGroup*; \]
}

}

參數

項目 描述
技術版本
技術10 或技術11。 使用 Direct3D 11 新功能的技術 (5_0 著色器、BindInterfaces 等) 必須使用技術11。
TechniqueName
選擇性。 可唯一識別效果技術名稱的 ASCII 字串。
< 注釋 >
[in] 選用。 一或多個使用者提供的資訊, (效果系統忽略的中繼資料) 。 如需語法,請參閱 注釋語法 (Direct3D 11)
通過
必要關鍵字。
PassName
[in] 選用。 可唯一識別傳遞名稱的 ASCII 字串。
SetStateGroup
[in]設定一或多個狀態群組,例如:
StateGroup Syntax
混色狀態
SetBlendState( arguments ); 

如需引數清單,請參閱 [ID3D11DeviceCoNtext::OMSetBlendState] (/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecoNtext-omsetblendstate) 。

深度樣板狀態
SetDepthStencilState( arguments ); 

如需引數清單,請參閱 ID3D11DeviceCoNtext::OMSetDepthStencilState

轉譯器狀態
SetRasterizerState( arguments ); 

如需引數清單,請參閱 [ID3D11DeviceCoNtext::RSSetState] (/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecoNtext-rssetstate) 。

著色器狀態
SetXXXShader( Shader );

SetXXXShader 是 SetVertexShader、SetDomainShader、SetHullShader、SetGeometryShader、SetPixelShader 或 SetComputeShader (,類似于 API 方法 ID3D11DeviceCoNtext::VSSetShaderID3D11DeviceCoNtext::D SSetShaderID3D11DeviceCoNtext::HSSetShaderID3D11DeviceCoNtext::GSSetShaderID3D11DeviceCoNtext::P SSetShader and ID3D11DeviceCoNtext::CSSetShader) 。

著色器是著色器變數,可以透過許多方式取得:

SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );
SetXXXShader( CompileShader( NULL ) );
SetXXXShader( NULL );
SetXXXShader( myShaderVar );
SetXXXShader( myShaderArray[2] );
SetXXXShader( myShaderArray[uIndex] );
SetGeometryShader( ConstructGSWithSO( Shader, strStream0 ) );
SetGeometryShader( ConstructGSWithSO( Shader, strStream0, strStream1, strStream2, strStream3, RastStream ) );
轉譯目標狀態 值為下列其中之一:
SetRenderTargets( RTV0, DSV );
SetRenderTargets( RTV0, RTV1, DSV );
...
SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV );

類似于 ID3D11DeviceCoNtext::OMSetRenderTargets

範例

本範例會設定混合狀態。

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 );
    }
}

本範例會設定著色器狀態。

technique10 RenderSceneWithTexture1Light
{
    pass P0
    {
        SetVertexShader( CompileShader( vs_4_0, RenderSceneVS( 1, true, true ) ) );
        SetGeometryShader( NULL );
        SetPixelShader( CompileShader( ps_4_0, RenderScenePS( true ) ) );
    }
}

效果格式

效果群組語法 (Direct3D 11)

效果狀態群組