bool TryUploadStructType(Shader shader, string name, object o) { var location = shader.GetUniformLocation(name); if (location == -1) { return(false); } if (o is Matrix4) { var u = (Matrix4)o; GL.UniformMatrix4(location, false, ref u); MyGL.Check(); return(true); } if (o is bool) { var u = (bool)o; GL.Uniform1(location, u ? 1 : 0); MyGL.Check(); return(true); } if (o is int) { var u = (int)o; GL.Uniform1(location, u); MyGL.Check(); return(true); } if (o is float) { var u = (float)o; GL.Uniform1(location, u); MyGL.Check(); return(true); } if (o is double) { var u = (double)o; GL.Uniform1(location, u); MyGL.Check(); return(true); } if (o is Vector2) { var u = (Vector2)o; GL.Uniform2(location, ref u); MyGL.Check(); return(true); } if (o is Vector3d) { var u = (Vector3d)o; MyGL.Uniform3(location, ref u); MyGL.Check(); return(true); } if (o is Vector3) { var u = (Vector3)o; GL.Uniform3(location, ref u); MyGL.Check(); return(true); } if (o is Vector4) { var u = (Vector4)o; GL.Uniform4(location, ref u); MyGL.Check(); return(true); } return(false); }