#include <GL/gl.h>
#include <GL/glext.h>
-void set_uniform_float(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, float value)
+void set_uniform_float(GLuint glsl_program_num, const std::string &prefix, const std::string &key, float value)
{
std::string name = prefix + "_" + key;
GLint l = glGetUniformLocation(glsl_program_num, name.c_str());
check_error();
}
-void set_uniform_vec2(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, const float *values)
+void set_uniform_vec2(GLuint glsl_program_num, const std::string &prefix, const std::string &key, const float *values)
{
std::string name = prefix + "_" + key;
GLint l = glGetUniformLocation(glsl_program_num, name.c_str());
check_error();
}
-void set_uniform_vec3(GLhandleARB 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)
{
std::string name = prefix + "_" + key;
GLint l = glGetUniformLocation(glsl_program_num, name.c_str());
return output;
}
-void Effect::set_uniforms(GLhandleARB glsl_program_num, const std::string& prefix)
+void Effect::set_uniforms(GLuint glsl_program_num, const std::string& prefix)
{
for (std::map<std::string, float*>::const_iterator it = params_float.begin();
it != params_float.end();
};
// 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_vec2(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, const float *values);
-void set_uniform_vec3(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, const float *values);
+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:
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);
printf("%s\n", frag_shader.c_str());
glsl_program_num = glCreateProgram();
- GLhandleARB vs_obj = compile_shader(read_file("vs.glsl"), GL_VERTEX_SHADER);
- GLhandleARB fs_obj = compile_shader(frag_shader, GL_FRAGMENT_SHADER);
+ GLuint vs_obj = compile_shader(read_file("vs.glsl"), GL_VERTEX_SHADER);
+ GLuint fs_obj = compile_shader(frag_shader, GL_FRAGMENT_SHADER);
glAttachShader(glsl_program_num, vs_obj);
check_error();
glAttachShader(glsl_program_num, fs_obj);
return read_file("lift_gamma_gain_effect.glsl");
}
-void LiftGammaGainEffect::set_uniforms(GLhandleARB glsl_program_num, const std::string &prefix)
+void LiftGammaGainEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix)
{
Effect::set_uniforms(glsl_program_num, prefix);
LiftGammaGainEffect();
std::string output_glsl();
- void set_uniforms(GLhandleARB glsl_program_num, const std::string &prefix);
+ void set_uniforms(GLuint glsl_program_num, const std::string &prefix);
private:
RGBTriplet lift, gamma, gain;
return std::string(buf, len);
}
-GLhandleARB compile_shader(const std::string &shader_src, GLenum type)
+GLuint compile_shader(const std::string &shader_src, GLenum type)
{
- GLhandleARB obj = glCreateShaderObjectARB(type);
+ GLuint obj = glCreateShader(type);
const GLchar* source[] = { shader_src.data() };
const GLint length[] = { shader_src.size() };
glShaderSource(obj, 1, source, length);
typedef double Matrix3x3[9];
std::string read_file(const std::string &filename);
-GLhandleARB compile_shader(const std::string &shader_src, GLenum type);
+GLuint compile_shader(const std::string &shader_src, GLenum type);
void multiply_3x3_matrices(const Matrix3x3 a, const Matrix3x3 b, Matrix3x3 result);
void invert_3x3_matrix(const Matrix3x3 m, Matrix3x3 result);
void print_3x3_matrix(const Matrix3x3 m);
return read_file("vignette_effect.glsl");
}
-void VignetteEffect::set_uniforms(GLhandleARB glsl_program_num, const std::string &prefix)
+void VignetteEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix)
{
Effect::set_uniforms(glsl_program_num, prefix);
VignetteEffect();
std::string output_glsl();
- void set_uniforms(GLhandleARB glsl_program_num, const std::string &prefix);
+ void set_uniforms(GLuint glsl_program_num, const std::string &prefix);
private:
Point2D center;
void draw_hsv_wheel(float y, float rad, float theta, float value)
{
- glUseProgramObjectARB(0);
+ glUseProgram(0);
check_error();
glActiveTexture(GL_TEXTURE0);
check_error();
void draw_saturation_bar(float y, float saturation)
{
- glUseProgramObjectARB(0);
+ glUseProgram(0);
check_error();
// value slider