diff options
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/space_node/drawnode.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index d28e3ac5507..31485463f4f 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -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) |