]> git.sesse.net Git - movit/blobdiff - effect_util.cpp
Release Movit 1.3.2. (From a branch, since I do not want to break ABI compatibility...
[movit] / effect_util.cpp
index e57a562f870da38f93a07243caf801fa11d48b58..dbeb48b0381a12bd682c018c799199c5869f39cb 100644 (file)
@@ -1,16 +1,20 @@
-#include <GL/glew.h>
+#include <epoxy/gl.h>
 #include <Eigen/Core>
 #include <stddef.h>
 #include <string>
 #include "util.h"
 
-GLint get_uniform_location(GLuint glsl_program_num, const std::string &prefix, const std::string &key)
+using namespace std;
+
+namespace movit {
+
+GLint get_uniform_location(GLuint glsl_program_num, const string &prefix, const string &key)
 {
-       std::string name = prefix + "_" + key;
+       string name = prefix + "_" + key;
        return glGetUniformLocation(glsl_program_num, name.c_str());
 }
 
-void set_uniform_int(GLuint glsl_program_num, const std::string &prefix, const std::string &key, int value)
+void set_uniform_int(GLuint glsl_program_num, const string &prefix, const string &key, int value)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -21,7 +25,7 @@ void set_uniform_int(GLuint glsl_program_num, const std::string &prefix, const s
        check_error();
 }
 
-void set_uniform_float(GLuint glsl_program_num, const std::string &prefix, const std::string &key, float value)
+void set_uniform_float(GLuint glsl_program_num, const string &prefix, const string &key, float value)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -32,7 +36,7 @@ void set_uniform_float(GLuint glsl_program_num, const std::string &prefix, const
        check_error();
 }
 
-void set_uniform_vec2(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values)
+void set_uniform_vec2(GLuint glsl_program_num, const string &prefix, const string &key, const float *values)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -43,7 +47,7 @@ void set_uniform_vec2(GLuint glsl_program_num, const std::string &prefix, const
        check_error();
 }
 
-void set_uniform_vec3(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values)
+void set_uniform_vec3(GLuint glsl_program_num, const string &prefix, const string &key, const float *values)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -54,7 +58,7 @@ void set_uniform_vec3(GLuint glsl_program_num, const std::string &prefix, const
        check_error();
 }
 
-void set_uniform_vec4(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values)
+void set_uniform_vec4(GLuint glsl_program_num, const string &prefix, const string &key, const float *values)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -65,7 +69,18 @@ void set_uniform_vec4(GLuint glsl_program_num, const std::string &prefix, const
        check_error();
 }
 
-void set_uniform_vec4_array(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values, size_t num_values)
+void set_uniform_vec2_array(GLuint glsl_program_num, const string &prefix, const string &key, const float *values, size_t num_values)
+{
+       GLint location = get_uniform_location(glsl_program_num, prefix, key);
+       if (location == -1) {
+               return;
+       }
+       check_error();
+       glUniform2fv(location, num_values, values);
+       check_error();
+}
+
+void set_uniform_vec4_array(GLuint glsl_program_num, const string &prefix, const string &key, const float *values, size_t num_values)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -76,7 +91,7 @@ void set_uniform_vec4_array(GLuint glsl_program_num, const std::string &prefix,
        check_error();
 }
 
-void set_uniform_mat3(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const Eigen::Matrix3d& matrix)
+void set_uniform_mat3(GLuint glsl_program_num, const string &prefix, const string &key, const Eigen::Matrix3d& matrix)
 {
        GLint location = get_uniform_location(glsl_program_num, prefix, key);
        if (location == -1) {
@@ -95,3 +110,5 @@ void set_uniform_mat3(GLuint glsl_program_num, const std::string &prefix, const
        glUniformMatrix3fv(location, 1, GL_FALSE, matrixf);
        check_error();
 }
+
+}  // namespace movit