- Uniform3f(float v0, float v1, float v2);
- virtual void apply(int index) const;
+ UniformMatrix(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
+ { store(info, buffer, value); }
+
+ static void store(const Program::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);
+ }
+
+ virtual UniformMatrix *clone() const
+ { return new UniformMatrix(value); }