특수 인터페이스(Direct3D 10)
ID3D10EffectVariable 인터페이스 필요한 인터페이스의 특정 형식으로 인터페이스를 캐스팅하기 위한 여러 가지 메서드가 있습니다. 메서드는 asType 형식이며 각 유형의 효과 변수(예: 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 Interface 상속되는 인터페이스에도 이러한 메서드가 있지만 잘못된 개체를 반환하도록 설계되었습니다. ID3D10EffectVariable Interface의 호출만 유효한 개체를 반환할 있습니다. 애플리케이션은 id3D10EffectVariable::IsValid 호출하여 반환된 개체를 테스트하여 id3D10EffectVariable을 호출하여 유효한지 확인할 수 있습니다.
관련 항목