[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53659] trunk/blender/source/blender/ editors: Alpha-over images on a black background when in RGB display mode

Sergey Sharybin sergey.vfx at gmail.com
Tue Jan 8 16:34:39 CET 2013


Revision: 53659
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53659
Author:   nazgul
Date:     2013-01-08 15:34:33 +0000 (Tue, 08 Jan 2013)
Log Message:
-----------
Alpha-over images on a black background when in RGB display mode

This is actually a bit arbitrary decision and mainly it preserves
compatibility with how images were displaying in previous releases.

In fact, we actually would need to think about configurable backdrop
color and blending mode to be used for display in RGB mode.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_image/image_draw.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c

Modified: trunk/blender/source/blender/editors/space_image/image_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_draw.c	2013-01-08 14:40:15 UTC (rev 53658)
+++ trunk/blender/source/blender/editors/space_image/image_draw.c	2013-01-08 15:34:33 UTC (rev 53659)
@@ -514,12 +514,16 @@
 		unsigned char *display_buffer;
 		void *cache_handle;
 
+		glEnable(GL_BLEND);
+		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
 		if (sima->flag & SI_USE_ALPHA) {
 			fdrawcheckerboard(x, y, x + ibuf->x * zoomx, y + ibuf->y * zoomy);
-
-			glEnable(GL_BLEND);
-			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 		}
+		else {
+			glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
+			glRecti(x, y, x + ibuf->x * zoomx, y + ibuf->y * zoomy);
+		}
 
 		display_buffer = IMB_display_buffer_acquire_ctx(C, ibuf, &cache_handle);
 
@@ -532,8 +536,7 @@
 
 		IMB_display_buffer_release(cache_handle);
 
-		if (sima->flag & SI_USE_ALPHA)
-			glDisable(GL_BLEND);
+		glDisable(GL_BLEND);
 	}
 
 	/* reset zoom */

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2013-01-08 14:40:15 UTC (rev 53658)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2013-01-08 15:34:33 UTC (rev 53659)
@@ -3271,10 +3271,18 @@
 				}
 				else {
 					glPixelZoom(snode->zoom, snode->zoom);
-					
+
+					glEnable(GL_BLEND);
+					glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+					glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
+					glRecti(x, y, x + ibuf->x * snode->zoom, y + ibuf->y * snode->zoom);
+
 					glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, display_buffer);
 					
 					glPixelZoom(1.0f, 1.0f);
+
+					glDisable(GL_BLEND);
 				}
 			}
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2013-01-08 14:40:15 UTC (rev 53658)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2013-01-08 15:34:33 UTC (rev 53659)
@@ -1058,6 +1058,10 @@
 	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 
 	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, ibuf->x, ibuf->y, 0, GL_RGBA, GL_UNSIGNED_BYTE, display_buffer);
+
+	glEnable(GL_BLEND);
+	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
 	glBegin(GL_QUADS);
 
 	if (draw_overlay) {
@@ -1089,6 +1093,7 @@
 	glEnd();
 	glBindTexture(GL_TEXTURE_2D, last_texid);
 	glDisable(GL_TEXTURE_2D);
+	glDisable(GL_BLEND);
 	glDeleteTextures(1, &texid);
 
 	if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {




More information about the Bf-blender-cvs mailing list