]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.cpp
Copy the tied program of ProgramData
[libs/gl.git] / source / programdata.cpp
index 1e4f5c1d27ceb1e3599079ecd67e455efc387c93..e279635f876116d1e40fce3064423e05c1e597c3 100644 (file)
@@ -24,7 +24,7 @@ ProgramData::ProgramData(const Program *p):
 
 // Blocks are intentionally left uncopied
 ProgramData::ProgramData(const ProgramData &other):
-       tied_program(0),
+       tied_program(other.tied_program),
        uniforms(other.uniforms),
        last_block(0),
        buffer(0),
@@ -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));