[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