다음을 통해 공유


특수 인터페이스(Direct3D 10)

ID3D10EffectVariable 인터페이스 에는 인터페이스를 필요한 특정 유형의 인터페이스로 캐스팅하는 여러 메서드가 있습니다. 메서드는As Type 형식이며 각 효과 변수 형식(예: AsBlend, AsConstantBuffer 등)에 대한 메서드를 포함합니다.

예를 들어 시간 및 월드 변환이라는 두 개의 전역 변수에 효과가 있다고 가정해 보겠습니다.

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

인터페이스를 특수화하여 코드를 단일 호출로 줄일 수 있습니다.

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

ID3D10EffectVariable 인터페이스에서 상속되는 인터페이스에도 이러한 메서드가 있지만 잘못된 개체를 반환하도록 설계되었습니다. ID3D10EffectVariable 인터페이스의 호출만 유효한 개체를 반환합니다. 애플리케이션은 ID3D10EffectVariable::IsValid를 호출하여 반환된 개체가 유효한지 테스트할 수 있습니다.

효과