]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.cpp
Add support for non-square matrix uniforms
[libs/gl.git] / source / programdata.cpp
index 1e4f5c1d27ceb1e3599079ecd67e455efc387c93..dba6b06f2cc8a94ca25d1006020fc567f9d1619d 100644 (file)
@@ -210,6 +210,36 @@ void ProgramData::uniform_matrix2(const string &name, const float *v)
        uniform(name, new UniformMatrix2x2f(v));
 }
 
+void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 2, 3> &m)
+{
+       uniform_matrix3x2(name, &m(0, 0));
+}
+
+void ProgramData::uniform_matrix3x2(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix3x2f(v));
+}
+
+void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 2, 4> &m)
+{
+       uniform_matrix4x2(name, &m(0, 0));
+}
+
+void ProgramData::uniform_matrix4x2(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix4x2f(v));
+}
+
+void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 3, 2> &m)
+{
+       uniform_matrix2x3(name, &m(0, 0));
+}
+
+void ProgramData::uniform_matrix2x3(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix2x3f(v));
+}
+
 void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 3, 3> &m)
 {
        uniform_matrix3(name, &m(0, 0));
@@ -220,6 +250,36 @@ void ProgramData::uniform_matrix3(const string &name, const float *v)
        uniform(name, new UniformMatrix3x3f(v));
 }
 
+void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 3, 4> &m)
+{
+       uniform_matrix4x3(name, &m(0, 0));
+}
+
+void ProgramData::uniform_matrix4x3(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix4x3f(v));
+}
+
+void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 4, 2> &m)
+{
+       uniform_matrix2x4(name, &m(0, 0));
+}
+
+void ProgramData::uniform_matrix2x4(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix2x4f(v));
+}
+
+void ProgramData::uniform(const string &name, const LinAl::Matrix<float, 4, 3> &m)
+{
+       uniform_matrix3x4(name, &m(0, 0));
+}
+
+void ProgramData::uniform_matrix3x4(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix3x4f(v));
+}
+
 void ProgramData::uniform(const string &name, const Matrix &m)
 {
        uniform_matrix4(name, m.data());
@@ -275,11 +335,41 @@ void ProgramData::uniform_matrix2_array(const string &name, unsigned n, const fl
        uniform(name, new UniformArray<UniformMatrix2x2f>(n, v));
 }
 
+void ProgramData::uniform_matrix3x2_array(const string &name, unsigned n, const float *v)
+{
+       uniform(name, new UniformArray<UniformMatrix3x2f>(n, v));
+}
+
+void ProgramData::uniform_matrix4x2_array(const string &name, unsigned n, const float *v)
+{
+       uniform(name, new UniformArray<UniformMatrix4x2f>(n, v));
+}
+
+void ProgramData::uniform_matrix2x3_array(const string &name, unsigned n, const float *v)
+{
+       uniform(name, new UniformArray<UniformMatrix2x3f>(n, v));
+}
+
 void ProgramData::uniform_matrix3_array(const string &name, unsigned n, const float *v)
 {
        uniform(name, new UniformArray<UniformMatrix3x3f>(n, v));
 }
 
+void ProgramData::uniform_matrix4x3_array(const string &name, unsigned n, const float *v)
+{
+       uniform(name, new UniformArray<UniformMatrix4x3f>(n, v));
+}
+
+void ProgramData::uniform_matrix2x4_array(const string &name, unsigned n, const float *v)
+{
+       uniform(name, new UniformArray<UniformMatrix2x4f>(n, v));
+}
+
+void ProgramData::uniform_matrix3x4_array(const string &name, unsigned n, const float *v)
+{
+       uniform(name, new UniformArray<UniformMatrix3x4f>(n, v));
+}
+
 void ProgramData::uniform_matrix4_array(const string &name, unsigned n, const float *v)
 {
        uniform(name, new UniformArray<UniformMatrix4x4f>(n, v));