//---------------------------------------- // Set a shader varible with it's handler. //---------------------------------------- bool ShaderGL::SetConstant(ShaderHandle Handler, const float* Values, u32 Count) { cgSetParameterValuefr((CGparameter)Handler, Count, Values); checkForCgError("cgSetParameterValuefc"); return true; } // SetVarible
// // SetFloatArray // void CCgUniform::SetFloatArray( GLsizei Dimension, GLsizei Count, const GLfloat *Array ) { cgSetParameterValuefr( m_Parameter, Dimension * Count, Array ); // ??? }
void cEffect::SetParam(const std::string &lacName, const float * lfParam, int liCount ) { static const unsigned kuiAuxiliarBuffer = 256 * 4; static float gFullArray[kuiAuxiliarBuffer]; CGparameter lParam = cgGetNamedEffectParameter(mEffect, lacName.c_str()); if (lParam) { int liNRows = cgGetParameterRows(lParam); int liNCols = cgGetParameterColumns(lParam); int liASize = cgGetArrayTotalSize(lParam); int liNTotal = liNRows*liNCols; if (liASize > 0) { liNTotal *= liASize; if ( liCount < liNTotal ) { assert(kuiAuxiliarBuffer > liNTotal); assert(kuiAuxiliarBuffer > liCount); memcpy(gFullArray, lfParam, sizeof(float) * liCount); cgSetParameterValuefr(lParam, liNTotal, gFullArray); } else { cgSetParameterValuefr(lParam, liCount, lfParam); } CGerror err = cgGetError(); if (err != CG_NO_ERROR) { OutputDebugStr(cgGetErrorString( err )); OutputDebugStr("\n"); } } } }