/// <summary>
 /// Set a uniform vec3 in the shader.
 /// Uses a cached float[] to reduce memory usage.
 /// </summary>
 /// <param name="location">The location of the uniform in the shader.</param>
 /// <param name="param">The Vector2f to load into the shader uniform.</param>
 public static void Uniform3(int location, Color3 data)
 {
     vector3Float[0] = data.R;
     vector3Float[1] = data.G;
     vector3Float[2] = data.B;
     GL.Uniform3fv(location, 1, vector3Float);
 }
 /// <summary>
 /// Set a uniform vec3 in the shader.
 /// Uses a cached float[] to reduce memory usage.
 /// </summary>
 /// <param name="location">The location of the uniform in the shader.</param>
 /// <param name="param">The Vector2f to load into the shader uniform.</param>
 public static void Uniform3(int location, Vector3f data)
 {
     vector3Float[0] = data.X;
     vector3Float[1] = data.Y;
     vector3Float[2] = data.Z;
     GL.Uniform3fv(location, 1, vector3Float);
 }