svn merge ^/trunk/blender -r48658:48674
[blender.git] / source / blender / editors / space_node / drawnode.c
index d28e3ac5507871b872a76ac31a23afc76482161a..31485463f4f674795f9b231dd2b49bd9c04348ec 100644 (file)
@@ -2992,7 +2992,25 @@ void draw_nodespace_back_pix(const bContext *C, ARegion *ar, SpaceNode *snode)
                        display_buffer = IMB_display_buffer_acquire(ibuf, view_settings, &win->display_settings, &cache_handle);
 
                        if (display_buffer) {
-                               if (snode->flag & SNODE_SHOW_ALPHA) {
+                               if (snode->flag & (SNODE_SHOW_R | SNODE_SHOW_G | SNODE_SHOW_B)) {
+                                       int ofs;
+
+                                       if      (snode->flag & SNODE_SHOW_R) ofs = 1;
+                                       else if (snode->flag & SNODE_SHOW_G) ofs = 2;
+                                       else                                 ofs = 3;
+
+                                       if (ENDIAN_ORDER == B_ENDIAN) {
+                                               ofs = 3 - ofs;
+                                       }
+
+                                       glPixelZoom(snode->zoom, snode->zoom);
+                                       /* swap bytes, so alpha is most significant one, then just draw it as luminance int */
+
+                                       glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_LUMINANCE, GL_UNSIGNED_INT, ((unsigned char *)ibuf->rect) + ofs);
+
+                                       glPixelZoom(1.0f, 1.0f);
+                               }
+                               else if (snode->flag & SNODE_SHOW_ALPHA) {
                                        glPixelZoom(snode->zoom, snode->zoom);
                                        /* swap bytes, so alpha is most significant one, then just draw it as luminance int */
                                        if (ENDIAN_ORDER == B_ENDIAN)