エフェクト グループの構文 (Direct3D 11)

エフェクト グループは、次の構文を使用して宣言します (エフェクト テクニックの構文については「エフェクト テクニックの構文 (Direct3D 11)」を参照してください)。

 fxgroup GroupName  [ <Annotations > ] {     TechniqueVersion TechniqueName [ <Annotations > ]      {         ...     }      TechniqueVersion TechniqueName [ <Annotations > ]      {         ...     }  }    

パラメーター

  • fxgroup
    必須キーワードです。

  • GroupName
    必須。エフェクト グループの名前を一意に識別する ASCII 文字列です。テクニックと違い、グループには名前が必要です。これは、テクニックが一意の識別子を持つことができるようにするためです (以下の「グループおよびテクニック」を参照)。

  • < アノテーション >
    [in] (省略可能)エフェクト システムで無視される、1 つ以上のユーザー指定情報 (メタデータ) です。構文については、「注釈の構文 (Direct3D 11)」を参照してください。

  • TechniqueVersion
    "technique10" または "technique11" です。Direct3D 11 の新規の機能 (5_0 シェーダー、BindInterfaces など) を使用するテクニックの場合は、"technique11" を指定する必要があります。

  • TechniqueName
    (省略可能)エフェクト テクニックの名前を一意に識別する ASCII 文字列です。

グループおよびテクニック

fx_4_0 エフェクトとの互換性を維持するために、グループはオプションになっています。すべてのグローバル テクニックが属する、名前を NULL とした暗黙的なグループがあります。

次の例を考えてみましょう。

 technique11 GlobalTech { } fxgroup Group1 {      technique11 Tech1 { ... }      technique11 Tech2 { ... } } fxgroup Group2 {      technique11 Tech1 { ... }      technique11 Tech2 { ... } } 

C++ では、名前によって 2 つの方法でテクニックを取得できます。次のコマンドでは、明示的なテクニックを取得します。

 pEffect->GetTechniqueByName( "GlobalTech" ); pEffect->GetTechniqueByName( "|GlobalTech" ); pEffect->GetTechniqueByName( "Group1|Tech1" ); pEffect->GetTechniqueByName( "Group1|Tech2" ); pEffect->GetTechniqueByName( "Group2|Tech1" ); pEffect->GetTechniqueByName( "Group2|Tech2" ); pEffect->GetGroupByName("Group1")->GetTechniqueByName( "Tech1" ); pEffect->GetGroupByName("Group1")->GetTechniqueByName( "Tech2" ); pEffect->GetGroupByName("Group2")->GetTechniqueByName( "Tech1" ); pEffect->GetGroupByName("Group2")->GetTechniqueByName( "Tech2" ); 

ID3DX11Effect::GetTechniqueByName が Effects 10 と同じように動作するように、すべての定義済みグループには名前を設定する必要があります。