private void CompleteDefInfo(int gltype, GpuProgramParameters.GpuConstantDefinition defToUpdate)
{
// decode uniform size and type
// Note GLSL never packs rows into float4's(from an API perspective anyway)
// therefore all values are tight in the buffer
switch (gltype)
{
case Gl.GL_FLOAT:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float1;
break;
case Gl.GL_FLOAT_VEC2:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float2;
break;
case Gl.GL_FLOAT_VEC3:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float3;
break;
case Gl.GL_FLOAT_VEC4:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float4;
break;
case Gl.GL_SAMPLER_1D:
// need to record samplers for GLSL
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Sampler1D;
break;
case Gl.GL_SAMPLER_2D:
case Gl.GL_SAMPLER_2D_RECT_ARB:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Sampler2D;
break;
case Gl.GL_SAMPLER_3D:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Sampler3D;
break;
case Gl.GL_SAMPLER_CUBE:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.SamplerCube;
break;
case Gl.GL_SAMPLER_1D_SHADOW:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Sampler1DShadow;
break;
case Gl.GL_SAMPLER_2D_SHADOW:
case Gl.GL_SAMPLER_2D_RECT_SHADOW_ARB:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Sampler2DShadow;
break;
case Gl.GL_INT:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int1;
break;
case Gl.GL_INT_VEC2:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int2;
break;
case Gl.GL_INT_VEC3:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int3;
break;
case Gl.GL_INT_VEC4:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int4;
break;
case Gl.GL_FLOAT_MAT2:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_2X2;
break;
case Gl.GL_FLOAT_MAT3:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_3X3;
break;
case Gl.GL_FLOAT_MAT4:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_4X4;
break;
case Gl.GL_FLOAT_MAT2x3:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_2X3;
break;
case Gl.GL_FLOAT_MAT3x2:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_3X2;
break;
case Gl.GL_FLOAT_MAT2x4:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_2X4;
break;
case Gl.GL_FLOAT_MAT4x2:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_4X2;
break;
case Gl.GL_FLOAT_MAT3x4:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_3X4;
break;
case Gl.GL_FLOAT_MAT4x3:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_4X3;
break;
default:
defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Unknown;
break;
}
// GL doesn't pad
defToUpdate.ElementSize = GpuProgramParameters.GpuConstantDefinition.GetElementSize( defToUpdate.ConstantType, false );
}