#include <assert.h>
+#include <Eigen/Core>
+
#include "opengl.h"
#include "util.h"
GLint get_uniform_location(GLuint glsl_program_num, const std::string &prefix, const std::string &key);
void set_uniform_int(GLuint glsl_program_num, const std::string &prefix, const std::string &key, int value);
void set_uniform_float(GLuint glsl_program_num, const std::string &prefix, const std::string &key, float value);
-void set_uniform_float_array(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values, size_t num_values);
void set_uniform_vec2(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values);
void set_uniform_vec3(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values);
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_mat3(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const Matrix3x3 matrix);
+void set_uniform_mat3(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const Eigen::Matrix3d &matrix);
class Effect {
public:
+ virtual ~Effect() {}
+
// An identifier for this type of effect, mostly used for debug output
- // (but some special names, like "ColorSpaceConversionEffect", holds special
+ // (but some special names, like "ColorspaceConversionEffect", holds special
// meaning). Same as the class name is fine.
virtual std::string effect_type_id() const = 0;
// Set a parameter; intended to be called from user code.
// Neither of these take ownership of the pointer.
- virtual bool set_int(const std::string&, int value);
- virtual bool set_float(const std::string &key, float value);
- virtual bool set_vec2(const std::string &key, const float *values);
- virtual bool set_vec3(const std::string &key, const float *values);
+ virtual bool set_int(const std::string&, int value) MUST_CHECK_RESULT;
+ virtual bool set_float(const std::string &key, float value) MUST_CHECK_RESULT;
+ virtual bool set_vec2(const std::string &key, const float *values) MUST_CHECK_RESULT;
+ virtual bool set_vec3(const std::string &key, const float *values) MUST_CHECK_RESULT;
protected:
// Register a parameter. Whenever set_*() is called with the same key,