Share via


效果技術語法 (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 是 SetVertexShaderSetGeometryShaderSetPixelShader (的其中一個,與VSSetShaderGSSetShaderPSSetShader) 類似。

 

效果狀態群組會列在 效果狀態中。

範例

此範例 (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 ) ) );
    }
}

效果格式