Commit: ccec97ea0a43dc2c3befbabe26474a890ac7f26f
Author: Clément Foucault
Date:   Fri Feb 24 01:20:30 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBccec97ea0a43dc2c3befbabe26474a890ac7f26f

Opengl glaDrawPixels removal: editors/spaces

===================================================================

M       source/blender/editors/space_file/file_draw.c
M       source/blender/editors/space_node/drawnode.c
M       source/blender/editors/space_node/node_draw.c
M       source/blender/editors/space_view3d/view3d_draw_legacy.c

===================================================================

diff --git a/source/blender/editors/space_file/file_draw.c 
b/source/blender/editors/space_file/file_draw.c
index dff32a5f0d..31326e2c18 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -341,6 +341,7 @@ static void file_draw_preview(
        float scale;
        int ex, ey;
        bool use_dropshadow = !is_icon && (typeflags & FILE_TYPE_IMAGE);
+       float col[4] = {1.0f, 1.0f, 1.0f, 1.0f};
 
        BLI_assert(imb != NULL);
 
@@ -387,12 +388,11 @@ static void file_draw_preview(
 
        /* the image */
        if (!is_icon && typeflags & FILE_TYPE_FTFONT) {
-               UI_ThemeColor(TH_TEXT);
+               UI_GetThemeColor4fv(TH_TEXT, col);
        }
-       else {
-               glColor4f(1.0, 1.0, 1.0, 1.0);
-       }
-       glaDrawPixelsTexScaled((float)xco, (float)yco, imb->x, imb->y, GL_RGBA, 
GL_UNSIGNED_BYTE, GL_NEAREST, imb->rect, scale, scale);
+
+       immDrawPixelsTexScaled((float)xco, (float)yco, imb->x, imb->y, GL_RGBA, 
GL_UNSIGNED_BYTE, GL_NEAREST, imb->rect,
+                              scale, scale, 1.0f, 1.0f, col);
 
        if (icon) {
                UI_icon_draw_aspect((float)xco, (float)yco, icon, icon_aspect, 
1.0f);
diff --git a/source/blender/editors/space_node/drawnode.c 
b/source/blender/editors/space_node/drawnode.c
index be7e905786..ee93344cda 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -3178,6 +3178,7 @@ void ED_init_node_socket_type_virtual(bNodeSocketType 
*stype)
 void draw_nodespace_back_pix(const bContext *C, ARegion *ar, SpaceNode *snode, 
bNodeInstanceKey parent_key)
 {
        bNodeInstanceKey active_viewer_key = (snode->nodetree ? 
snode->nodetree->active_viewer_key : NODE_INSTANCE_KEY_NONE);
+       float shuffle[4] = {0.0f, 0.0f, 0.0f, 0.0f};
        Image *ima;
        void *lock;
        ImBuf *ibuf;
@@ -3210,43 +3211,27 @@ void draw_nodespace_back_pix(const bContext *C, ARegion 
*ar, SpaceNode *snode, b
                        unsigned char *display_buffer = NULL;
                        void *cache_handle = NULL;
                        
-                       if (snode->flag & (SNODE_SHOW_R | SNODE_SHOW_G | 
SNODE_SHOW_B)) {
-                               int ofs;
+                       if (snode->flag & (SNODE_SHOW_R | SNODE_SHOW_G | 
SNODE_SHOW_B | SNODE_SHOW_ALPHA)) {
                                
                                display_buffer = 
IMB_display_buffer_acquire_ctx(C, ibuf, &cache_handle);
-                               
-#ifdef __BIG_ENDIAN__
-                               if      (snode->flag & SNODE_SHOW_R) ofs = 0;
-                               else if (snode->flag & SNODE_SHOW_G) ofs = 1;
-                               else                                 ofs = 2;
-#else
-                               if      (snode->flag & SNODE_SHOW_R) ofs = 1;
-                               else if (snode->flag & SNODE_SHOW_G) ofs = 2;
-                               else                                 ofs = 3;
-#endif
-                               
-                               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,
-                                                 display_buffer - (4 - ofs));
-                               
-                               glPixelZoom(1.0f, 1.0f);
-                       }
-                       else if (snode->flag & SNODE_SHOW_ALPHA) {
-                               display_buffer = 
IMB_display_buffer_acquire_ctx(C, ibuf, &cache_handle);
-                               
-                               glPixelZoom(snode->zoom, snode->zoom);
-                               /* swap bytes, so alpha is most significant 
one, then just draw it as luminance int */
-#ifdef __BIG_ENDIAN__
-                               glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
-#endif
-                               glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, 
ibuf->x, GL_LUMINANCE, GL_UNSIGNED_INT, display_buffer);
-                               
-#ifdef __BIG_ENDIAN__
-                               glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
-#endif
-                               glPixelZoom(1.0f, 1.0f);
+
+                               if (snode->flag & SNODE_SHOW_R)
+                                       shuffle[0] = 1.0f;
+                               else if (snode->flag & SNODE_SHOW_G)
+                                       shuffle[1] = 1.0f;
+                               else if (snode->flag & SNODE_SHOW_B)
+                                       shuffle[2] = 1.0f;
+                               else
+                                       shuffle[3] = 1.0f;
+
+                               GPUShader *shader = 
GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR);
+                               GPU_shader_bind(shader);
+                               GPU_shader_uniform_vector(shader, 
GPU_shader_get_uniform(shader, "shuffle"), 4, 1, shuffle);
+
+                               immDrawPixelsTex(x, y, ibuf->x, ibuf->y, 
GL_RGBA, GL_UNSIGNED_BYTE, GL_NEAREST,
+                                                display_buffer, snode->zoom, 
snode->zoom, NULL);
+
+                               GPU_shader_unbind();
                        }
                        else if (snode->flag & SNODE_USE_ALPHA) {
                                glEnable(GL_BLEND);
diff --git a/source/blender/editors/space_node/node_draw.c 
b/source/blender/editors/space_node/node_draw.c
index 40917f8e34..1dd0598ccf 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -705,10 +705,8 @@ static void node_draw_preview(bNodePreview *preview, rctf 
*prv)
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);  /* premul graphics 
*/
        
-       glColor4f(1.0, 1.0, 1.0, 1.0);
-       glPixelZoom(scale, scale);
-       glaDrawPixelsTex(draw_rect.xmin, draw_rect.ymin, preview->xsize, 
preview->ysize, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR, preview->rect);
-       glPixelZoom(1.0f, 1.0f);
+       immDrawPixelsTex(draw_rect.xmin, draw_rect.ymin, preview->xsize, 
preview->ysize, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR, preview->rect,
+                        scale, scale, NULL);
        
        glDisable(GL_BLEND);
 
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c 
b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index 84f0e296a1..e7b76c4717 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -780,16 +780,12 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, 
View3D *v3d,
                                zoomy *= -1.0f;
                                y1 = y2;
                        }
-                       glPixelZoom(zoomx, zoomy);
-                       glColor4f(1.0f, 1.0f, 1.0f, 1.0f - bgpic->blend);
 
-                       /* could not use glaDrawPixelsAuto because it could 
fallback to
-                        * glaDrawPixelsSafe in some cases, which will end up 
in missing
-                        * alpha transparency for the background image (sergey)
-                        */
-                       glaDrawPixelsTex(x1 - centx, y1 - centy, ibuf->x, 
ibuf->y, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR, ibuf->rect);
+                       float col[4] = {1.0f, 1.0f, 1.0f, 1.0f - bgpic->blend};
+                       glUseProgram(0); /* immDrawPixelsTex use it's own 
shader */
+                       immDrawPixelsTex(x1 - centx, y1 - centy, ibuf->x, 
ibuf->y, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR, ibuf->rect,
+                                        zoomx, zoomy, col);
 
-                       glPixelZoom(1.0, 1.0);
                        glPixelTransferf(GL_ALPHA_SCALE, 1.0f);
 
                        glMatrixMode(GL_PROJECTION);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to