Reset all pixel store state before snapshoting.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 9 May 2011 22:42:30 +0000 (23:42 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 9 May 2011 22:42:30 +0000 (23:42 +0100)
glretrace_main.cpp

index 9144de6..abed8ed 100644 (file)
@@ -112,7 +112,21 @@ static void snapshot(Image::Image &image) {
     glGetIntegerv(GL_DRAW_BUFFER, &drawbuffer);
     glGetIntegerv(GL_READ_BUFFER, &readbuffer);
     glReadBuffer(drawbuffer);
+
+    glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
+    glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
+    glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE);
+    glPixelStorei(GL_PACK_ROW_LENGTH, 0);
+    glPixelStorei(GL_PACK_IMAGE_HEIGHT, 0);
+    glPixelStorei(GL_PACK_SKIP_ROWS, 0);
+    glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
+    glPixelStorei(GL_PACK_SKIP_IMAGES, 0);
+    glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
     glReadPixels(0, 0, image.width, image.height, GL_RGBA, GL_UNSIGNED_BYTE, image.pixels);
+    
+    glPopClientAttrib();
+
     glReadBuffer(readbuffer);
 }