次の方法で共有


特殊化インターフェイス (Direct3D 10)

ID3D10EffectVariable Interface には、必要な特定の種類のインターフェイスにインターフェイスをキャストするためのメソッドが多数含まれています。 メソッドの形式は AsType で、各種類の効果変数 (AsBlend、AsConstantBuffer など) のメソッドが含まれています。

たとえば、時間変換とワールド変換という 2 つのグローバル変数を持つ効果があるとします。

float    g_fTime;
float4x4 g_mWorld;

これらの変数を取得する例 (SimpleSample10 サンプルから) を次に示します。

ID3D10EffectVariable* g_pVariable;
ID3D10EffectMatrixVariable* g_pmWorld;
ID3D10EffectScalarVariable* g_pfTime;

g_pVariable = g_pEffect10->GetVariableByName("g_mWorld");
g_pmWorld = g_pVariable->AsMatrix();
g_pfTime = g_pEffect10->GetVariableByName("g_fTime");
g_pfTime = g_pVariable->AsScalar();

インターフェイスを特殊化することで、コードを 1 回の呼び出しに減らすことができます。

g_pmWorld = (g_pEffect10->GetVariableByName("g_mWorld"))->AsMatrix();
g_pfTime = (g_pEffect10->GetVariableByName("g_fTime"))->AsScalar();

ID3D10EffectVariable Interface から継承するインターフェイスにもこれらのメソッドがありますが、無効なオブジェクトを返すように設計されています。有効なオブジェクト ID3D10EffectVariable インターフェイスからの呼び出しだけです。 アプリケーションは、返されたオブジェクトをテストして、ID3D10EffectVariable::IsValid呼び出すことによって有効かどうかを確認できます。

効果の