[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