]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/uniform.h
Store default-block uniform data in a memory block
[libs/gl.git] / source / core / uniform.h
index bc78bab8c1c891ad55086397f2bbcc9250d949a4..8cdcdfda5aefea0a255533b189294e8496f7f745 100644 (file)
@@ -2,7 +2,7 @@
 #define MSP_GL_UNIFORM_H_
 
 #include <algorithm>
-#include "program.h"
+#include "reflectdata.h"
 
 namespace Msp {
 namespace GL {
@@ -17,8 +17,7 @@ private:
 public:
        virtual ~Uniform() { }
 
-       virtual void apply(int) const = 0;
-       virtual void store(const Program::UniformInfo &, void *) const = 0;
+       virtual void store(const ReflectData::UniformInfo &, void *) const = 0;
        virtual Uniform *clone() const = 0;
 };
 
@@ -40,15 +39,10 @@ public:
 
        Type get() const { return value; }
 
-       virtual void apply(int index) const
-       { apply(index, 1, &value); }
-
-       static void apply(int, unsigned, const T *);
-
-       virtual void store(const Program::UniformInfo &info, void *buffer) const
+       virtual void store(const ReflectData::UniformInfo &info, void *buffer) const
        { store(info, buffer, &value); }
 
-       static void store(const Program::UniformInfo &, void *buffer, const T *value)
+       static void store(const ReflectData::UniformInfo &, void *buffer, const T *value)
        { *reinterpret_cast<T *>(buffer) = *value; }
 
        virtual UniformScalar *clone() const
@@ -77,15 +71,10 @@ public:
 
        BaseType get(unsigned i) const { return value[i]; }
 
-       virtual void apply(int index) const
-       { apply(index, 1, value); }
-
-       static void apply(int index, unsigned size, const T *value);
-
-       virtual void store(const Program::UniformInfo &info, void *buffer) const
+       virtual void store(const ReflectData::UniformInfo &info, void *buffer) const
        { store(info, buffer, value); }
 
-       static void store(const Program::UniformInfo &, void *buffer, const T *value)
+       static void store(const ReflectData::UniformInfo &, void *buffer, const T *value)
        { std::copy(value, value+vecsize, reinterpret_cast<T *>(buffer)); }
 
        virtual UniformVector *clone() const
@@ -116,15 +105,10 @@ public:
        void set(const T *vp)
        { std::copy(vp, vp+rows*cols, value); }
 
-       virtual void apply(int index) const
-       { apply(index, 1, value); }
-
-       static void apply(int index, unsigned size, const T *value);
-
-       virtual void store(const Program::UniformInfo &info, void *buffer) const
+       virtual void store(const ReflectData::UniformInfo &info, void *buffer) const
        { store(info, buffer, value); }
 
-       static void store(const Program::UniformInfo &info, void *buffer, const T *value)
+       static void store(const ReflectData::UniformInfo &info, void *buffer, const T *value)
        {
                for(unsigned i=0; i<cols; ++i)
                        UniformVector<T, rows>::store(info, reinterpret_cast<char *>(buffer)+i*info.matrix_stride, value+i*rows);
@@ -174,10 +158,7 @@ public:
        void set(const BaseType *vp)
        { std::copy(vp, vp+elemsize*size_, values); }
 
-       virtual void apply(int index) const
-       { T::apply(index, size_, values); }
-
-       virtual void store(const Program::UniformInfo &info, void *buffer) const
+       virtual void store(const ReflectData::UniformInfo &info, void *buffer) const
        {
                for(unsigned i=0; i<size_; ++i)
                        T::store(info, reinterpret_cast<char *>(buffer)+i*info.array_stride, values+i*elemsize);