]> git.tdb.fi Git - libs/gl.git/commitdiff
Add 3x3 and 2x2 uniform matrices
authorMikko Rasa <tdb@tdb.fi>
Mon, 3 Sep 2012 10:18:30 +0000 (13:18 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 3 Sep 2012 10:18:30 +0000 (13:18 +0300)
source/programdata.cpp
source/programdata.h
source/uniform.cpp
source/uniform.h

index ed4b0a292b339ddc8c8bea858281949e96fca118..1ecd3a1dc42eaef6a62785f3fa4f07e1809a6405 100644 (file)
@@ -119,6 +119,16 @@ void ProgramData::uniform4(const string &name, const float *v)
        uniform(name, new Uniform4f(v));
 }
 
+void ProgramData::uniform_matrix2(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix2x2f(v));
+}
+
+void ProgramData::uniform_matrix3(const string &name, const float *v)
+{
+       uniform(name, new UniformMatrix3x3f(v));
+}
+
 void ProgramData::uniform_matrix4(const string &name, const float *v)
 {
        uniform(name, new UniformMatrix4x4f(v));
index 38803c571ee2e210451ccc6abb3abd41ab005b23..3cef2d4c1b5cd921fa75c7f8d6dc449300151909 100644 (file)
@@ -87,6 +87,8 @@ public:
        void uniform(const std::string &, const Vector4 &);
        void uniform(const std::string &, const Color &);
        void uniform4(const std::string &, const float *);
+       void uniform_matrix2(const std::string &, const float *);
+       void uniform_matrix3(const std::string &, const float *);
        void uniform_matrix4(const std::string &, const float *);
        void uniform_matrix4(const std::string &, const Matrix &);
        void uniform1_array(const std::string &, unsigned, const float *);
index 09450a9a0962f991805ae0d7ba35698ff031f515..8aba365be5e5cd2238a0934eb639d6585c453d8e 100644 (file)
@@ -36,6 +36,18 @@ void UniformVector<float, 4>::apply(int index, unsigned size, const float *value
 }
 
 
+template<>
+void UniformMatrix<float, 2, 2>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix2fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 3, 3>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix2fv(index, size, false, value);
+}
+
 template<>
 void UniformMatrix<float, 4, 4>::apply(int index, unsigned size, const float *value)
 {
index f8a59f2a441e5fd2b3ec2ba55cdd604b50ab0477..156fe67623ec27bb4afd3334fac24dcc1bc77372 100644 (file)
@@ -121,6 +121,8 @@ public:
        { return new UniformMatrix(value); }
 };
 
+typedef UniformMatrix<float, 2, 2> UniformMatrix2x2f;
+typedef UniformMatrix<float, 3, 3> UniformMatrix3x3f;
 typedef UniformMatrix<float, 4, 4> UniformMatrix4x4f;