- moved fbtex to post.c, made it a ping-pong buffer, added fbos for it.
[demo_prior] / src / demo.c
index 97da536..3841066 100644 (file)
@@ -13,7 +13,6 @@ float win_aspect;
 long time_msec;
 
 static int reshape_pending;
-static unsigned int fbtex;
 static unsigned int sdr_gamma;
 
 int demo_init(void)
@@ -26,16 +25,14 @@ 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");
@@ -61,9 +58,7 @@ void demo_cleanup(void)
        if(sdr_gamma) {
                glDeleteProgram(sdr_gamma);
        }
-       if(fbtex) {
-               glDeleteTextures(1, &fbtex);
-       }
+       post_cleanup();
 
        for(i=0; i<num_parts; i++) {
                parts[i]->destroy();
@@ -75,10 +70,8 @@ void demo_display(void)
        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);
@@ -110,11 +103,11 @@ void demo_display(void)
 
        /* 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);
        }
 }