[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15662] trunk/blender/source/gameengine: BGE Bug Fix:#17349, fixes some problems about 2d-filters

Hamed Zaghaghi hamed.zaghaghi at gmail.com
Mon Jul 21 01:03:02 CEST 2008


Revision: 15662
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15662
Author:   zaghaghi
Date:     2008-07-21 01:03:01 +0200 (Mon, 21 Jul 2008)

Log Message:
-----------
BGE Bug Fix:#17349, fixes some problems about 2d-filters

Modified Paths:
--------------
    trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
    trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
    trunk/blender/source/gameengine/GamePlayer/common/GPC_Canvas.h
    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h
    trunk/blender/source/gameengine/Rasterizer/RAS_ICanvas.h

Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp	2008-07-20 21:51:00 UTC (rev 15661)
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp	2008-07-20 23:03:01 UTC (rev 15662)
@@ -101,6 +101,13 @@
 	return scrarea_get_win_height(m_area);
 }
 
+RAS_Rect &
+KX_BlenderCanvas::
+GetWindowArea(
+){
+	return m_area_rect;
+}	
+
 	void
 KX_BlenderCanvas::
 SetViewPort(
@@ -112,6 +119,11 @@
 	int minx = scrarea_get_win_x(m_area);
 	int miny = scrarea_get_win_y(m_area);
 
+	m_area_rect.SetLeft(minx + x1);
+	m_area_rect.SetBottom(miny + y1);
+	m_area_rect.SetRight(minx + x2);
+	m_area_rect.SetTop(miny + y2);
+
 	glViewport(minx + x1, miny + y1, vp_width, vp_height);
 	glScissor(minx + x1, miny + y1, vp_width, vp_height);
 }

Modified: trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h	2008-07-20 21:51:00 UTC (rev 15661)
+++ trunk/blender/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h	2008-07-20 23:03:01 UTC (rev 15662)
@@ -117,6 +117,10 @@
 		return m_displayarea;
 	};
 
+		RAS_Rect &
+	GetWindowArea(
+	);
+
 		void
 	SetViewPort(
 		int x1, int y1,
@@ -159,6 +163,7 @@
 private:
 	/** Blender area the game engine is running within */
 	struct ScrArea* m_area;
+	RAS_Rect 	m_area_rect;
 };
 
 #endif // __KX_BLENDERCANVAS

Modified: trunk/blender/source/gameengine/GamePlayer/common/GPC_Canvas.h
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/common/GPC_Canvas.h	2008-07-20 21:51:00 UTC (rev 15661)
+++ trunk/blender/source/gameengine/GamePlayer/common/GPC_Canvas.h	2008-07-20 23:03:01 UTC (rev 15662)
@@ -130,6 +130,12 @@
 	) {
 		return m_displayarea;
 	};
+	
+		RAS_Rect &
+	GetWindowArea(
+	) {
+		return m_displayarea;
+	}
 
 		void 
 	BeginFrame(

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp	2008-07-20 21:51:00 UTC (rev 15661)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp	2008-07-20 23:03:01 UTC (rev 15662)
@@ -43,6 +43,7 @@
 
 #include "STR_String.h"
 #include "RAS_ICanvas.h"
+#include "RAS_Rect.h"
 #include "RAS_2DFilterManager.h"
 #include <iostream>
 
@@ -293,10 +294,13 @@
 	}
 }
 
-void RAS_2DFilterManager::UpdateOffsetMatrix(int width, int height)
+void RAS_2DFilterManager::UpdateOffsetMatrix(RAS_ICanvas* canvas)
 {
-	canvaswidth = texturewidth = width;
-	canvasheight = textureheight = height;
+	RAS_Rect canvas_rect = canvas->GetWindowArea();
+	canvaswidth = canvas->GetWidth();
+	canvasheight = canvas->GetHeight();
+	texturewidth = canvaswidth + canvas_rect.GetLeft();
+	textureheight = canvasheight + canvas_rect.GetBottom();
 
 	GLint i,j;
 	i = 0;
@@ -352,7 +356,7 @@
 
 	if(canvaswidth != canvas->GetWidth() || canvasheight != canvas->GetHeight())
 	{
-		UpdateOffsetMatrix(canvas->GetWidth(), canvas->GetHeight());
+		UpdateOffsetMatrix(canvas);
 		SetupTextures(need_depth, need_luminance);
 	}
 	GLuint	viewport[4]={0};
@@ -360,19 +364,21 @@
 	if(need_depth){
 		glActiveTextureARB(GL_TEXTURE1);
 		glBindTexture(GL_TEXTURE_2D, texname[1]);
-		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT, 0,0, texturewidth,textureheight, 0);
+		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT, 0, 0, texturewidth,textureheight, 0);
 	}
 	
 	if(need_luminance){
 		glActiveTextureARB(GL_TEXTURE2);
 		glBindTexture(GL_TEXTURE_2D, texname[2]);
-		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE16, 0,0, texturewidth,textureheight, 0);
+		glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE16, 0, 0 , texturewidth,textureheight, 0);
 	}
 
 	glGetIntegerv(GL_VIEWPORT,(GLint *)viewport);
-	glViewport(0, 0, texturewidth, textureheight);
+	glViewport(0,0, texturewidth, textureheight);
 
 	glDisable(GL_DEPTH_TEST);
+	glMatrixMode(GL_TEXTURE);
+	glLoadIdentity();
 	glMatrixMode(GL_PROJECTION);
 	glLoadIdentity();
 	glMatrixMode(GL_MODELVIEW);

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h	2008-07-20 21:51:00 UTC (rev 15661)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.h	2008-07-20 23:03:01 UTC (rev 15662)
@@ -42,7 +42,7 @@
 	void SetupTextures(bool depth, bool luminance);
 	void FreeTextures();
 
-	void UpdateOffsetMatrix(int width, int height);
+	void UpdateOffsetMatrix(RAS_ICanvas* canvas);
 
 	float			textureoffsets[18];
 	float			view[4];

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_ICanvas.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_ICanvas.h	2008-07-20 21:51:00 UTC (rev 15661)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_ICanvas.h	2008-07-20 23:03:01 UTC (rev 15662)
@@ -137,6 +137,14 @@
 	) = 0;
 
 	/**
+	 * Used to get canvas area within blender.
+	 */
+	virtual
+		RAS_Rect &
+	GetWindowArea(
+	) = 0;
+
+	/**
 	 * Set the visible vieport 
 	 */
 





More information about the Bf-blender-cvs mailing list