diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-02-24 13:11:43 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-02-24 14:38:50 +0300 |
commit | 1e7475a5d7878642057ea0cb313b5ee0d4a8545e (patch) | |
tree | 7367c569551f13849c081aca731174289513b470 /source/blender/editors/space_image/image_draw.c | |
parent | 0584c82ad7c1c2f133f617c52de28be15f6840d4 (diff) |
Opengl glaDrawPixels removal: More descriptive setup.
Diffstat (limited to 'source/blender/editors/space_image/image_draw.c')
-rw-r--r-- | source/blender/editors/space_image/image_draw.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index 00b28457987..03a45d1d935 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -420,14 +420,11 @@ static void sima_draw_zbuf_pixels(float x1, float y1, int rectx, int recty, int recti[a] = rect[a] * 0.5f + 0.5f; } - GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); - GPU_shader_bind(shader); + GPUShader *shader = immDrawPixelsTexSetup(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); GPU_shader_uniform_vector(shader, GPU_shader_get_uniform(shader, "shuffle"), 4, 1, red); immDrawPixelsTex(x1, y1, rectx, recty, GL_RED, GL_INT, GL_NEAREST, recti, zoomx, zoomy, NULL); - GPU_shader_unbind(); - MEM_freeN(recti); } @@ -461,14 +458,11 @@ static void sima_draw_zbuffloat_pixels(Scene *scene, float x1, float y1, int rec } } - GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); - GPU_shader_bind(shader); + GPUShader *shader = immDrawPixelsTexSetup(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); GPU_shader_uniform_vector(shader, GPU_shader_get_uniform(shader, "shuffle"), 4, 1, red); immDrawPixelsTex(x1, y1, rectx, recty, GL_RED, GL_FLOAT, GL_NEAREST, rectf, zoomx, zoomy, NULL); - GPU_shader_unbind(); - MEM_freeN(rectf); } @@ -526,8 +520,7 @@ static void draw_image_buffer(const bContext *C, SpaceImage *sima, ARegion *ar, else if (sima->flag & SI_SHOW_ALPHA) shuffle[3] = 1.0f; - GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); - GPU_shader_bind(shader); + GPUShader *shader = immDrawPixelsTexSetup(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); GPU_shader_uniform_vector(shader, GPU_shader_get_uniform(shader, "shuffle"), 4, 1, shuffle); IMB_colormanagement_display_settings_from_ctx(C, &view_settings, &display_settings); @@ -539,8 +532,6 @@ static void draw_image_buffer(const bContext *C, SpaceImage *sima, ARegion *ar, } IMB_display_buffer_release(cache_handle); - - GPU_shader_unbind(); } if (sima->flag & SI_USE_ALPHA) @@ -615,24 +606,19 @@ static void draw_image_buffer_tiled(SpaceImage *sima, ARegion *ar, Scene *scene, shuffle[3] = 1.0f; } - /* To make sure no program is bound */ - GPU_shader_unbind(); - for (sy = 0; sy + dy <= ibuf->y; sy += dy) { for (sx = 0; sx + dx <= ibuf->x; sx += dx) { UI_view2d_view_to_region(&ar->v2d, fx + (float)sx / (float)ibuf->x, fy + (float)sy / (float)ibuf->y, &x, &y); if ((sima->flag & (SI_SHOW_R | SI_SHOW_G | SI_SHOW_B | SI_SHOW_ALPHA)) == 0) { + immDrawPixelsTexSetup(GPU_SHADER_2D_IMAGE_COLOR); immDrawPixelsTex(x, y, dx, dy, GL_RGBA, GL_UNSIGNED_BYTE, GL_NEAREST, rect, zoomx, zoomy, NULL); } else { - GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); - GPU_shader_bind(shader); + GPUShader *shader = immDrawPixelsTexSetup(GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR); GPU_shader_uniform_vector(shader, GPU_shader_get_uniform(shader, "shuffle"), 4, 1, shuffle); immDrawPixelsTex(x, y, dx, dy, GL_RGBA, GL_UNSIGNED_BYTE, GL_NEAREST, rect, zoomx, zoomy, NULL); - - GPU_shader_unbind(); } } } @@ -735,7 +721,10 @@ static void draw_image_paint_helpers(const bContext *C, ARegion *ar, Scene *scen glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + immDrawPixelsTexSetup(GPU_SHADER_2D_IMAGE_COLOR); immDrawPixelsTex(x, y, ibuf->x, ibuf->y, GL_RGBA, GL_UNSIGNED_BYTE, GL_NEAREST, display_buffer, zoomx, zoomy, col); + glDisable(GL_BLEND); BKE_image_release_ibuf(brush->clone.image, ibuf, NULL); |