エフェクト テクニックの構文 (Direct3D 10)
エフェクト テクニックは、次の構文を使用して宣言されます。
technique10 TechniqueName [ <Annotations > ] { pass PassName [ <Annotations > ] { [ SetStateGroup; ] [ SetStateGroup; ] ... [ SetStateGroup; ] } }
パラメーター
- technique10
必須キーワードです。 - TechniqueName
(省略可能)エフェクト テクニックの名前を一意に識別する ASCII 文字列です。 - < Annotations >
[in] (省略可能)エフェクト システムで無視される、1 つ以上のユーザー指定情報 (メタデータ) です。構文については、「注釈の構文 (Direct3D 10)」を参照してください。 - pass
必須キーワードです。 - PassName
[in] (省略可能)パスの名前を一意に識別する ASCII 文字列です。 - SetStateGroup
[in] 次のようなステート グループを 1 つまたは複数設定します。StateGroup 構文 ブレンディング ステート SetBlendState( arguments );
引数リストについては、「ID3D10Device::OMSetBlendState」を参照してください。
深度/ステンシル ステート SetDepthStencilState( arguments );
引数リストについては、「ID3D10Device::OMSetDepthStencilState」を参照してください。
ラスタライザー ステート SetRasterizerState( arguments );
引数リストについては、「ID3D10Device::RSSetState」を参照してください。
シェーダー ステート SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );
または
SetXXXShader( CompileShader( NULL ) );
または
SetXXXShader( NULL );
SetXXXShader は、SetVertexShader、SetGeometryShader、または SetPixelShader のいずれか 1 つです (これらは、API メソッド ID3D10Device::VSSetShader、ID3D10Device::GSSetShader、および ID3D10Device::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 ) ) ); } }