/* ============= GLSLGamma_CreateShaders ============= */ static void GLSLGamma_CreateShaders (void) { const GLchar *vertSource = \ "#version 110\n" "\n" "void main(void) {\n" " gl_Position = vec4(gl_Vertex.xy, 0.0, 1.0);\n" " gl_TexCoord[0] = gl_MultiTexCoord0;\n" "}\n"; const GLchar *fragSource = \ "#version 110\n" "\n" "uniform sampler2D GammaTexture;\n" "uniform float GammaValue;\n" "uniform float ContrastValue;\n" "\n" "void main(void) {\n" " vec4 frag = texture2D(GammaTexture, gl_TexCoord[0].xy);\n" " frag.rgb = frag.rgb * ContrastValue;\n" " gl_FragColor = vec4(pow(frag.rgb, vec3(GammaValue)), 1.0);\n" "}\n"; if (!gl_glsl_gamma_able) return; r_gamma_program = GL_CreateProgram (vertSource, fragSource, 0, NULL); // get uniform locations gammaLoc = GL_GetUniformLocation (&r_gamma_program, "GammaValue"); contrastLoc = GL_GetUniformLocation (&r_gamma_program, "ContrastValue"); textureLoc = GL_GetUniformLocation (&r_gamma_program, "GammaTexture"); }
bool Shader::LoadFromBuffer( const char* vfile, const char* ffile ) { _program = GL_CreateProgram(vfile, ffile); return true; }
void Shader::PreLink() { _program = GL_CreateProgram(); }