]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/uniform.cpp
Rearrange soucre files into subdirectories
[libs/gl.git] / source / core / uniform.cpp
diff --git a/source/core/uniform.cpp b/source/core/uniform.cpp
new file mode 100644 (file)
index 0000000..c18fc36
--- /dev/null
@@ -0,0 +1,113 @@
+#include <msp/gl/extensions/arb_shader_objects.h>
+#include <msp/gl/extensions/nv_non_square_matrices.h>
+#include "uniform.h"
+
+namespace Msp {
+namespace GL {
+
+template<>
+void UniformScalar<int>::apply(int index, unsigned size, const int *value)
+{
+       glUniform1iv(index, size, value);
+}
+
+template<>
+void UniformScalar<float>::apply(int index, unsigned size, const float *value)
+{
+       glUniform1fv(index, size, value);
+}
+
+
+template<>
+void UniformVector<int, 2>::apply(int index, unsigned size, const int *value)
+{
+       glUniform2iv(index, size, value);
+}
+
+template<>
+void UniformVector<float, 2>::apply(int index, unsigned size, const float *value)
+{
+       glUniform2fv(index, size, value);
+}
+
+template<>
+void UniformVector<int, 3>::apply(int index, unsigned size, const int *value)
+{
+       glUniform3iv(index, size, value);
+}
+
+template<>
+void UniformVector<float, 3>::apply(int index, unsigned size, const float *value)
+{
+       glUniform3fv(index, size, value);
+}
+
+template<>
+void UniformVector<int, 4>::apply(int index, unsigned size, const int *value)
+{
+       glUniform4iv(index, size, value);
+}
+
+template<>
+void UniformVector<float, 4>::apply(int index, unsigned size, const float *value)
+{
+       glUniform4fv(index, size, value);
+}
+
+
+template<>
+void UniformMatrix<float, 2, 2>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix2fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 2, 3>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix3x2fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 2, 4>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix4x2fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 3, 2>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix2x3fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 3, 3>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix3fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 3, 4>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix4x3fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 4, 2>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix2x4fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 4, 3>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix3x4fv(index, size, false, value);
+}
+
+template<>
+void UniformMatrix<float, 4, 4>::apply(int index, unsigned size, const float *value)
+{
+       glUniformMatrix4fv(index, size, false, value);
+}
+
+} // namespace GL
+} // namespace Msp