-int Color3WayMain::handle_opengl()
-{
-#ifdef HAVE_GL
-
- get_output()->to_texture();
- get_output()->enable_opengl();
-
- unsigned int shader = 0;
- const char *shader_stack[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
- int current_shader = 0;
- int aggregate_interpolate = 0;
- int aggregate_gamma = 0;
-
- get_aggregation(&aggregate_interpolate,
- &aggregate_gamma);
-
-printf("Color3WayMain::handle_opengl %d %d\n", aggregate_interpolate, aggregate_gamma);
- if(aggregate_interpolate)
- INTERPOLATE_COMPILE(shader_stack, current_shader)
-
- if(aggregate_gamma)
- GAMMA_COMPILE(shader_stack, current_shader, aggregate_interpolate)
-
- COLORBALANCE_COMPILE(shader_stack,
- current_shader,
- aggregate_gamma || aggregate_interpolate)
-
- shader = VFrame::make_shader(0,
- shader_stack[0],
- shader_stack[1],
- shader_stack[2],
- shader_stack[3],
- shader_stack[4],
- shader_stack[5],
- shader_stack[6],
- shader_stack[7],
- 0);
-
- if(shader > 0)
- {
- glUseProgram(shader);
- glUniform1i(glGetUniformLocation(shader, "tex"), 0);
-
- if(aggregate_interpolate) INTERPOLATE_UNIFORMS(shader);
- if(aggregate_gamma) GAMMA_UNIFORMS(shader);
-
- COLORBALANCE_UNIFORMS(shader);
-
- }
-
- get_output()->init_screen();
- get_output()->bind_texture(0);
- get_output()->draw_texture();
- glUseProgram(0);
- get_output()->set_opengl_state(VFrame::SCREEN);
-#endif
- return 0;
-}
-
-
-
-
-
-