示例#1
0
文件: Effect.cpp 项目: panmar/pg2
 void Effect::AddVariable(ID3DX11EffectVariable* var, const D3DX11_EFFECT_VARIABLE_DESC* varDesc, const D3DX11_EFFECT_TYPE_DESC* typeDesc) {
     _ASSERT(var && varDesc && typeDesc);
     switch (typeDesc->Class) {
         case D3D_SVC_SCALAR : {
             ID3DX11EffectScalarVariable* scalarVar = var->AsScalar();
             _ASSERT(scalarVar->IsValid());
             scalarVars[varDesc->Name] = scalarVar;
             break;
         }
         case D3D_SVC_VECTOR : {
             ID3DX11EffectVectorVariable* vectorVar = var->AsVector();
             _ASSERT(vectorVar->IsValid());
             vectorVars[varDesc->Name] = vectorVar;
             break;
         }
         case D3D_SVC_MATRIX_COLUMNS:
         case D3D_SVC_MATRIX_ROWS: {
             ID3DX11EffectMatrixVariable* matrixVar = var->AsMatrix();
             _ASSERT(matrixVar->IsValid());
             matrixVars[varDesc->Name] = matrixVar;
             break;
         }
         case D3D_SVC_STRUCT: structVars[varDesc->Name] = var;
             break;
         case D3D_SVC_OBJECT: {
             ID3DX11EffectShaderResourceVariable* resourceVar = var->AsShaderResource();
             if (resourceVar->IsValid()) {
                 resourceVars[varDesc->Name] = resourceVar;
             }
             break;
         }
         default:
             _ASSERT(false);
     }
 }
void DX11Shader::setVectorArray(const char* strName, float* pFloat, UINT offset, UINT count)
{
    ID3DX11EffectVectorVariable*		   pVector;

    pVector = m_pEffect->pEffect->GetVariableByName(strName)->AsVector();
    if (pVector->IsValid())
        pVector->SetFloatVectorArray(pFloat, offset, count);
    else
        EventManager::Instance().postMessage("Unknown variable: %s in shader: %s", strName, m_pEffect->strName);
}