src/opengl/qgl.cpp
changeset 23 89e065397ea6
parent 19 fcece45ef507
child 30 5dc02b23752f
--- a/src/opengl/qgl.cpp	Fri May 14 16:40:13 2010 +0300
+++ b/src/opengl/qgl.cpp	Thu May 27 13:40:48 2010 +0300
@@ -1534,7 +1534,14 @@
             uint *q = (uint*)img.scanLine(y);
             for (int x=0; x < w; ++x) {
                 const uint pixel = *q;
-                *q = ((pixel << 16) & 0xff0000) | ((pixel >> 16) & 0xff) | (pixel & 0xff00ff00);
+                if (alpha_format && include_alpha) {
+                    *q = ((pixel << 16) & 0xff0000) | ((pixel >> 16) & 0xff)
+                         | (pixel & 0xff00ff00);
+                } else {
+                    *q = 0xff000000 | ((pixel << 16) & 0xff0000)
+                         | ((pixel >> 16) & 0xff) | (pixel & 0x00ff00);
+                }
+
                 q++;
             }
         }
@@ -1545,7 +1552,8 @@
 
 QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha)
 {
-    QImage img(size, alpha_format ? QImage::Format_ARGB32 : QImage::Format_RGB32);
+    QImage img(size, (alpha_format && include_alpha) ? QImage::Format_ARGB32
+                                                     : QImage::Format_RGB32);
     int w = size.width();
     int h = size.height();
     glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, img.bits());