]> git.sesse.net Git - movit/blobdiff - main.cpp
Upload the texture via PBOs. Slight speedup on nVidia, rather neutral on Intel.
[movit] / main.cpp
index 5c01cdbd003fd711dbb2418b536f150caf22cb9d..287e19a681a23e11e515fa42ecd9fd415dbe5d4c 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -3,7 +3,6 @@
 
 #define WIDTH 1280
 #define HEIGHT 720
-#define BUFFER_OFFSET(i) ((char *)NULL + (i))
 
 #include <string.h>
 #include <math.h>
@@ -261,8 +260,12 @@ int main(int argc, char **argv)
                vignette_effect->set_float("inner_radius", inner_radius);
                chain.render_to_screen(src_img);
                
+               glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 1);
+               check_error();
                glReadPixels(0, 0, WIDTH, HEIGHT, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, BUFFER_OFFSET(0));
                check_error();
+               glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
+               check_error();
 
                draw_hsv_wheel(0.0f, lift_rad, lift_theta, lift_v);
                draw_hsv_wheel(0.2f, gamma_rad, gamma_theta, gamma_v);
@@ -274,6 +277,8 @@ int main(int argc, char **argv)
                SDL_GL_SwapBuffers();
                check_error();
 
+               glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 1);
+               check_error();
                unsigned char *screenbuf = (unsigned char *)glMapBuffer(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY);
                check_error();
                if (screenshot) {
@@ -285,6 +290,8 @@ int main(int argc, char **argv)
                }
                glUnmapBuffer(GL_PIXEL_PACK_BUFFER_ARB);
                check_error();
+               glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
+               check_error();
 
 #if 1
 #if _POSIX_C_SOURCE >= 199309L