long time_msec;
static int reshape_pending;
-static unsigned int fbtex;
static unsigned int sdr_gamma;
int demo_init(void)
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
- glEnable(GL_FRAMEBUFFER_SRGB);
- glEnable(GL_MULTISAMPLE);
-
- glGenTextures(1, &fbtex);
- glBindTexture(GL_TEXTURE_2D, fbtex);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- if(win_width) {
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, win_width, win_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ if(opt.srgb) {
+ glEnable(GL_FRAMEBUFFER_SRGB);
}
+ if(opt.msaa) {
+ glEnable(GL_MULTISAMPLE);
+ }
+
+ post_init();
if(!(sdr_gamma = create_program_load("sdr/gamma.v.glsl", "sdr/gamma.p.glsl"))) {
fprintf(stderr, "Warning: failed to load the gamma correction shader\n");
if(sdr_gamma) {
glDeleteProgram(sdr_gamma);
}
- if(fbtex) {
- glDeleteTextures(1, &fbtex);
- }
+ post_cleanup();
for(i=0; i<num_parts; i++) {
parts[i]->destroy();
long part_time;
if(reshape_pending) {
- /* reshape fbtex */
- glBindTexture(GL_TEXTURE_2D, fbtex);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, win_width, win_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
- reshape_pending = 1;
+ post_reshape(win_width, win_height);
+ reshape_pending = 0;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
/* no-srgb gamma correction fallback */
if(!opt.srgb) {
- glBindTexture(GL_TEXTURE_2D, fbtex);
+ glBindTexture(GL_TEXTURE_2D, fbtex[0].id);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, win_width, win_height);
glUseProgram(sdr_gamma);
- overlay(fbtex, win_aspect, 1.0);
+ overlay_tex(fbtex, 1.0);
}
}