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