Example #1
0
        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);
        }