[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47964] trunk/blender/source/blender/ editors/space_view3d/view3d_draw.c: Fix more of #31789: cycles border render going out of view giving wrong result.

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Jun 15 17:01:33 CEST 2012


Revision: 47964
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47964
Author:   blendix
Date:     2012-06-15 15:01:32 +0000 (Fri, 15 Jun 2012)
Log Message:
-----------
Fix more of #31789: cycles border render going out of view giving wrong result.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2012-06-15 15:00:51 UTC (rev 47963)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2012-06-15 15:01:32 UTC (rev 47964)
@@ -2830,13 +2830,17 @@
 		cliprct.ymin += ar->winrct.ymin;
 		cliprct.ymax += ar->winrct.ymin;
 
-		cliprct.xmin = MAX2(cliprct.xmin, ar->winrct.xmin);
-		cliprct.ymin = MAX2(cliprct.ymin, ar->winrct.ymin);
-		cliprct.xmax = MIN2(cliprct.xmax, ar->winrct.xmax);
-		cliprct.ymax = MIN2(cliprct.ymax, ar->winrct.ymax);
+		cliprct.xmin = CLAMPIS(cliprct.xmin, ar->winrct.xmin, ar->winrct.xmax);
+		cliprct.ymin = CLAMPIS(cliprct.ymin, ar->winrct.ymin, ar->winrct.ymax);
+		cliprct.xmax = CLAMPIS(cliprct.xmax, ar->winrct.xmin, ar->winrct.xmax);
+		cliprct.ymax = CLAMPIS(cliprct.ymax, ar->winrct.ymin, ar->winrct.ymax);
 
-		glGetIntegerv(GL_SCISSOR_BOX, scissor);
-		glScissor(cliprct.xmin, cliprct.ymin, cliprct.xmax - cliprct.xmin, cliprct.ymax - cliprct.ymin);
+		if(cliprct.xmax > cliprct.xmin && cliprct.ymax > cliprct.ymin) {
+			glGetIntegerv(GL_SCISSOR_BOX, scissor);
+			glScissor(cliprct.xmin, cliprct.ymin, cliprct.xmax - cliprct.xmin, cliprct.ymax - cliprct.ymin);
+		}
+		else
+			return 0;
 	}
 
 	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
@@ -2847,11 +2851,6 @@
 	else
 		fdrawcheckerboard(0, 0, ar->winx, ar->winy);
 
-	if (draw_border) {
-		/* restore scissor as it was before */
-		glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
-	}
-
 	/* render result draw */
 	type = rv3d->render_engine->type;
 	type->view_draw(rv3d->render_engine, C);
@@ -2859,6 +2858,11 @@
 	if (v3d->flag & V3D_DISPBGPICS)
 		view3d_draw_bgpic(scene, ar, v3d, TRUE, TRUE);
 
+	if (draw_border) {
+		/* restore scissor as it was before */
+		glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
+	}
+
 	return 1;
 }
 




More information about the Bf-blender-cvs mailing list