+#include <GL/gl.h>
+
+// Can alias on a float[2].
+struct Point2D {
+ Point2D(float x, float y)
+ : x(x), y(y) {}
+
+ float x, y;
+};
+
+// Can alias on a float[3].
+struct RGBTriplet {
+ RGBTriplet(float r, float g, float b)
+ : r(r), g(g), b(b) {}
+
+ float r, g, b;
+};
+
+// Convenience functions that deal with prepending the prefix.
+void set_uniform_float(GLuint glsl_program_num, const std::string &prefix, const std::string &key, float value);
+void set_uniform_vec2(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values);
+void set_uniform_vec3(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values);
+