次の方法で共有


効果手法の構文 (Direct3D 11)

効果の手法は、このセクションで説明する構文を使用して宣言されています。

TechniqueVersion TechniqueName [ <Annotations> ]

{

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

}

パラメーター

Item 説明
TechniqueVersion
technique10 または technique11 のいずれか。 Direct3D 11 の新機能 (5_0 シェーダー、BindInterfaces など) を使用する手法では、technique11 を使用する必要があります。
TechniqueName
省略可能。 効果手法の名前を一意に識別する ASCII 文字列。
< 注釈 >
[in] オプション。 エフェクト システムによって無視されるユーザー指定の情報 (メタデータ) の 1 つ以上の部分。 構文については、「 注釈構文 (Direct3D 11)」を参照してください。
渡す
必須のキーワード (keyword)。
PassName
[in] オプション。 パスの名前を一意に識別する ASCII 文字列。
SetStateGroup
[入力]次のような 1 つ以上の状態グループを設定します。
StateGroup 構文
ブレンドの状態
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::VSSetShader に似ています) のいずれかです。 ID3D11DeviceContext::D SSetShaderID3D11DeviceContext::HSSetShaderID3D11DeviceContext::GSSetShaderID3D11DeviceContext::P SSetShaderID3D11DeviceContext::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)

効果の状態グループ