[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49014] trunk/blender/source/gameengine/ Rasterizer/RAS_2DFilterManager.cpp: Fix for [#32129] " 2D filter texture width off by one?" reported by Alex Fraser (z0r).

Mitchell Stokes mogurijin at gmail.com
Wed Jul 18 07:51:44 CEST 2012


Revision: 49014
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49014
Author:   moguri
Date:     2012-07-18 05:51:44 +0000 (Wed, 18 Jul 2012)
Log Message:
-----------
Fix for [#32129] "2D filter texture width off by one?" reported by Alex Fraser (z0r).

The GetWidth() and GetHeight() functions of the canvas' display area seem to give values that are both off by one for what OpenGL wants. Adding 1 to both values seems to fix the problem.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp	2012-07-18 05:40:24 UTC (rev 49013)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp	2012-07-18 05:51:44 UTC (rev 49014)
@@ -324,8 +324,8 @@
 void RAS_2DFilterManager::UpdateOffsetMatrix(RAS_ICanvas* canvas)
 {
 	/* RAS_Rect canvas_rect = canvas->GetWindowArea(); */ /* UNUSED */
-	texturewidth = canvas->GetWidth();
-	textureheight = canvas->GetHeight();
+	texturewidth = canvas->GetWidth()+1;
+	textureheight = canvas->GetHeight()+1;
 	GLint i,j;
 
 	if (!GL_ARB_texture_non_power_of_two)
@@ -402,6 +402,7 @@
 	GLuint	viewport[4]={0};
 	glGetIntegerv(GL_VIEWPORT,(GLint *)viewport);
 	RAS_Rect rect = canvas->GetWindowArea();
+	int rect_width = rect.GetWidth()+1, rect_height = rect.GetHeight()+1;
 
 	if (canvaswidth != canvas->GetWidth() || canvasheight != canvas->GetHeight())
 	{
@@ -419,19 +420,19 @@
 	if (need_depth) {
 		glActiveTextureARB(GL_TEXTURE1);
 		glBindTexture(GL_TEXTURE_2D, texname[1]);
-		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT, rect.GetLeft(), rect.GetBottom(), rect.GetWidth(), rect.GetHeight(), 0);
+		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT, rect.GetLeft(), rect.GetBottom(), rect_width, rect_height, 0);
 	}
 	
 	if (need_luminance) {
 		glActiveTextureARB(GL_TEXTURE2);
 		glBindTexture(GL_TEXTURE_2D, texname[2]);
-		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE16, rect.GetLeft(), rect.GetBottom(), rect.GetWidth(), rect.GetHeight(), 0);
+		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE16, rect.GetLeft(), rect.GetBottom(), rect_width, rect_height, 0);
 	}
 
 	// reverting to texunit 0, without this we get bug [#28462]
 	glActiveTextureARB(GL_TEXTURE0);
 
-	glViewport(rect.GetLeft(), rect.GetBottom(), rect.GetWidth()+1, rect.GetHeight()+1);
+	glViewport(rect.GetLeft(), rect.GetBottom(), rect_width, rect.GetHeight()+1);
 
 	glDisable(GL_DEPTH_TEST);
 	// in case the previous material was wire
@@ -454,7 +455,7 @@
 
 			glActiveTextureARB(GL_TEXTURE0);
 			glBindTexture(GL_TEXTURE_2D, texname[0]);
-			glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, rect.GetLeft(), rect.GetBottom(), rect.GetWidth(), rect.GetHeight(), 0); // Don't use texturewidth and textureheight in case we don't have NPOT support
+			glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, rect.GetLeft(), rect.GetBottom(), rect_width, rect_height, 0); // Don't use texturewidth and textureheight in case we don't have NPOT support
 			glClear(GL_COLOR_BUFFER_BIT);
 
 			glBegin(GL_QUADS);




More information about the Bf-blender-cvs mailing list