X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect.h;h=32d8f402f09598c88f2f4a989a9c70ecdead7206;hp=3585e2df9a168a0439d7da808471dd0871dee102;hb=96a1cff51a8b7dc45ebe725e0d0685eecce31331;hpb=bfa58911af9e945f3532a2c48306b4e9e293e0f7 diff --git a/effect.h b/effect.h index 3585e2d..32d8f40 100644 --- a/effect.h +++ b/effect.h @@ -6,6 +6,14 @@ #include +// Can alias on a float[2]. +struct Point2D { + Point2D(float x, float y) + : x(x), y(y) {} + + float x, y; +}; + // Can alias on a float[3]. struct RGBTriplet { RGBTriplet(float r, float g, float b) @@ -14,9 +22,10 @@ struct RGBTriplet { float r, g, b; }; -// Convenience functions that deal with prepending the prefix.. -void set_uniform_float(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, float value); -void set_uniform_vec3(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, const float *values); +// Convenience functions that deal with prepending the prefix. +void set_uniform_float(GLuint glsl_program_num, const std::string &prefix, const std::string &key, float value); +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); class Effect { public: @@ -28,22 +37,25 @@ public: virtual std::string output_convenience_uniforms(); virtual std::string output_glsl() = 0; - virtual void set_uniforms(GLhandleARB glsl_program_num, const std::string& prefix); + virtual void set_uniforms(GLuint glsl_program_num, const std::string& prefix); // Neither of these take ownership. bool set_int(const std::string&, int value); bool set_float(const std::string &key, float value); + bool set_vec2(const std::string &key, const float *values); bool set_vec3(const std::string &key, const float *values); protected: // Neither of these take ownership. void register_int(const std::string &key, int *value); void register_float(const std::string &key, float *value); + void register_vec2(const std::string &key, float *values); void register_vec3(const std::string &key, float *values); private: std::map params_int; std::map params_float; + std::map params_vec2; std::map params_vec3; };