#include namespace mbgl { template <> void Uniform::bind(const float& t) { glUniform1f(location, t); } template <> void Uniform::bind(const int32_t& t) { glUniform1i(location, t); } template <> void Uniform>::bind(const std::array& t) { glUniform2fv(location, 1, t.data()); } template <> void Uniform>::bind(const std::array& t) { glUniform3fv(location, 1, t.data()); } template <> void Uniform>::bind(const std::array& t) { glUniform4fv(location, 1, t.data()); } template <> void UniformMatrix<2>::bind(const std::array& t) { glUniformMatrix2fv(location, 1, GL_FALSE, t.data()); } template <> void UniformMatrix<3>::bind(const std::array& t) { glUniformMatrix3fv(location, 1, GL_FALSE, t.data()); } template <> void UniformMatrix<4>::bind(const std::array& t) { glUniformMatrix4fv(location, 1, GL_FALSE, t.data()); } // Add more as needed. }