Arabirimleri Özelleştirme (Direct3D 11)

ID3DX11EffectVariable, arabirimi ihtiyacınız olan belirli bir arabirim türüne dönüştürmeye yönelik bir dizi yönteme sahiptir. Yöntemler AsType biçimindedir ve her efekt değişkeni türü için bir yöntem içerir (AsBlend, AsConstantBuffer vb.)

Örneğin, iki genel değişkenle bir etkiniz olduğunu varsayalım: zaman ve dünya dönüşümü.

float    g_fTime;
float4x4 g_mWorld;

Bu değişkenleri alan bir örnek aşağıda verilmiştir:

ID3DX11EffectVariable* g_pVariable;
ID3DX11EffectMatrixVariable* g_pmWorld;
ID3DX11EffectScalarVariable* g_pfTime;

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

Arabirimleri uzmanlaştırarak kodu tek bir çağrıya düşürebilirsiniz.

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

ID3DX11EffectVariable devralan arabirimler de bu yöntemlere sahiptir, ancak geçersiz nesneler döndürecek şekilde tasarlanmıştır; yalnızca ID3DX11EffectVariable çağrıları geçerli nesneler döndürür. Uygulamalar, ID3DX11EffectVariable::IsValidçağrısı yaparak geçerli olup olmadığını görmek için döndürülen nesneyi test edebilir.

Efektleri (Direct3D 11)