効果手法の構文 (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 は 、SetVertexShader、 SetGeometryShader、または SetPixelShader のいずれかです (これは、API メソッド 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 ) ) );
}
}
関連トピック