効果手法の構文 (Direct3D 10)

効果の手法は、次の構文で宣言されています。

technique10 TechniqueName [ <Annotations> ]

{

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

}

パラメーター

technique10

必須のキーワード (keyword)。

TechniqueName

省略可能。 効果手法の名前を一意に識別する ASCII 文字列。

注釈

[in] オプション。 エフェクト システムによって無視されるユーザー指定の情報 (メタデータ) の 1 つ以上の部分。 構文については、「 注釈構文 (Direct3D 10)」を参照してください。

渡す

必須のキーワード (keyword)。

PassName

[in] オプション。 パスの名前を一意に識別する ASCII 文字列。

SetStateGroup

[入力]次のような 1 つ以上の状態グループを設定します。

StateGroup 構文
ブレンドの状態
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 ) ) );

or

SetXXXShader( CompileShader( NULL ) );

or

SetXXXShader( NULL );

SetXXXShader は 、SetVertexShaderSetGeometryShader、または SetPixelShader のいずれかです (これは、API メソッド 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 ) ) );
    }
}

効果の形式