public override void BindProgramParameters( GpuProgramParameters parms, GpuProgramParameters.GpuParamVariability mask )
{
// only supports float constants
var floatStruct = parms.FloatLogicalBufferStruct;
foreach ( var i in floatStruct.Map )
{
if ( ( i.Value.Variability & mask ) != 0 )
{
var logicalIndex = i.Key;
var pFloat = parms.GetFloatPointer( i.Value.PhysicalIndex ).Pointer;
// Iterate over the params, set in 4-float chunks (low-level)
for ( var j = 0; j < i.Value.CurrentSize; j += 4 )
{
Gl.glSetFragmentShaderConstantATI( Gl.GL_CON_0_ATI + logicalIndex, pFloat.Pin() );
pFloat.UnPin();
pFloat += 4;
++logicalIndex;
}
}
}
}