Bagikan melalui


Antarmuka Spesialisasi (Direct3D 10)

ID3D10EffectVariable Interface memiliki sejumlah metode untuk mentransmisikan antarmuka ke jenis antarmuka tertentu yang Anda butuhkan. Metodenya adalah dari bentuk SebagaiJenis dan menyertakan metode untuk setiap jenis variabel efek (seperti AsBlend, AsConstantBuffer dll.)

Misalnya, Anda memiliki efek dengan dua variabel global: waktu dan transformasi dunia.

float    g_fTime;
float4x4 g_mWorld;

Berikut adalah contoh (dari Sampel SimpleSample10) yang mendapatkan variabel ini:

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();

Dengan mengkhususkan antarmuka, Anda dapat mengurangi kode menjadi satu panggilan.

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

Antarmuka yang mewarisi dari ID3D10EffectVariable Interface juga memiliki metode ini, tetapi telah dirancang untuk mengembalikan objek yang tidak valid; hanya panggilan dari ID3D10EffectVariable Interface mengembalikan objek yang valid. Aplikasi dapat menguji objek yang dikembalikan untuk melihat apakah objek tersebut valid dengan memanggil ID3D10EffectVariable::IsValid.

Efek