[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57238] branches/multiview/source/blender/ windowmanager/intern/wm_stereo.c: multiview : merging from github branch

Dalai Felinto dfelinto at gmail.com
Tue Jun 4 20:21:11 CEST 2013


Revision: 57238
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57238
Author:   dfelinto
Date:     2013-06-04 18:21:11 +0000 (Tue, 04 Jun 2013)
Log Message:
-----------
multiview : merging from github branch
github: 51b695bdf33e9e8a80c5c2b453ac44ace22f7885
http://github.com/dfelinto/blender/tree/multiview

note: this is trunk/svn revision: 57236

Modified Paths:
--------------
    branches/multiview/source/blender/windowmanager/intern/wm_stereo.c

Modified: branches/multiview/source/blender/windowmanager/intern/wm_stereo.c
===================================================================
--- branches/multiview/source/blender/windowmanager/intern/wm_stereo.c	2013-06-04 18:04:34 UTC (rev 57237)
+++ branches/multiview/source/blender/windowmanager/intern/wm_stereo.c	2013-06-04 18:21:11 UTC (rev 57238)
@@ -122,39 +122,54 @@
 static GLuint left_interlace_mask[32];
 static GLuint right_interlace_mask[32];
 static int interlace_prev_type = -1;
+static char interlace_prev_swap = -1;
 
 static void wm_interlace_create_masks(void)
 {
-	int i;
+	GLuint pattern;
+	char i;
+	char swap = U.stereo_flag & USER_INTERLACE_SWAP_LEFT_RIGHT;
 
-	if(interlace_prev_type != U.interlace_type) {
-		switch(U.interlace_type) {
-			case USER_INTERLACE_TYPE_ROW_INTERLEAVED:
-				for(i = 0; i < 32; i++) {
-					left_interlace_mask[i] = (i&1)*0xFFFFFFFF;
-					right_interlace_mask[i] = (i&0)*0xFFFFFFFF;
-				}
-				break;
-			case USER_INTERLACE_TYPE_COLUMN_INTERLEAVED:
-				for(i = 0; i < 32; i++) {
-					left_interlace_mask[i] = 0x55555555;
-					right_interlace_mask[i] = 0xAAAAAAAA;
-				}
-				break;
-			case USER_INTERLACE_TYPE_CHECKERBOARD_INTERLEAVED:
-			default:
-				for(i = 0; i < 32; i += 2) {
-					left_interlace_mask[i] = 0x55555555;
-					right_interlace_mask[i] = 0xAAAAAAAA;
-				}
-				for(i = 1; i < 32; i += 2) {
-					left_interlace_mask[i] = 0xAAAAAAAA;
-					right_interlace_mask[i] = 0x55555555;
-				}
-				break;
-		}
-		interlace_prev_type = U.interlace_type;
+	if (interlace_prev_type == U.interlace_type && interlace_prev_swap == swap)
+		return;
+
+	switch(U.interlace_type) {
+		case USER_INTERLACE_TYPE_ROW_INTERLEAVED:
+			pattern = 0x00000000;
+			pattern = swap? ~pattern : pattern;
+			for(i = 0; i < 32; i += 2) {
+				left_interlace_mask[i] = pattern;
+				right_interlace_mask[i] = ~pattern;
+			}
+			for(i = 1; i < 32; i += 2) {
+				left_interlace_mask[i] = ~pattern;
+				right_interlace_mask[i] = pattern;
+			}
+			break;
+		case USER_INTERLACE_TYPE_COLUMN_INTERLEAVED:
+			pattern = 0x55555555;
+			pattern = swap? ~pattern : pattern;
+			for(i = 0; i < 32; i++) {
+				left_interlace_mask[i] = pattern;
+				right_interlace_mask[i] = ~pattern;
+			}
+			break;
+		case USER_INTERLACE_TYPE_CHECKERBOARD_INTERLEAVED:
+		default:
+			pattern = 0x55555555;
+			pattern = swap? ~pattern : pattern;
+			for(i = 0; i < 32; i += 2) {
+				left_interlace_mask[i] = pattern;
+				right_interlace_mask[i] = ~pattern;
+			}
+			for(i = 1; i < 32; i += 2) {
+				left_interlace_mask[i] = ~pattern;
+				right_interlace_mask[i] = pattern;
+			}
+			break;
 	}
+	interlace_prev_type = U.interlace_type;
+	interlace_prev_swap = swap;
 }
 
 static void wm_method_draw_stereo_interlace(wmWindow *win)
@@ -285,11 +300,11 @@
 	for (view=0; view < 2; view ++) {
 		if (view == STEREO_LEFT_ID) {
 			triple = win->drawdataall;
-			soffy = 0;
+			soffy = WM_window_pixels_y(win) * 0.5;
 		}
 		else {
 			triple = win->drawdatastereoall;
-			soffy = WM_window_pixels_y(win) * 0.5;
+			soffy = 0;
 		}
 
 		glEnable(triple->target);




More information about the Bf-blender-cvs mailing list