Example #1
0
	//----------------------------------------
	// 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 ); // ???
 }
Example #3
0
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");
		  }
	  }
   }
}