Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2017-04-03 09:46:55 +0300
committerBenoit Bolsee <benoit.bolsee@online.be>2017-04-03 09:46:55 +0300
commit9bf3c963761c6d970a9c222da3091082c9b6f0f5 (patch)
tree69967d2281092fc7752c7a4a841e992e76951af3
parent9847537979b8a3ccf4ee5c7f6ca5b66ed9d7b80b (diff)
BGE: Fix 1-pixel bug with viewport and aspect ratio.
The canvas viewport is initially set as (0,0,width,height) but treated at OGL level as (left,bottom,right,top), which differs by 1 pixel. This was causing a wrong aspect ratio in the render.
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp4
-rw-r--r--source/gameengine/GamePlayer/common/GPC_Canvas.cpp8
-rw-r--r--source/gameengine/Ketsji/KX_Dome.cpp2
-rw-r--r--source/gameengine/Rasterizer/RAS_2DFilterManager.cpp8
-rw-r--r--source/gameengine/VideoTexture/ImageRender.cpp2
5 files changed, 12 insertions, 12 deletions
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
index 927b26faf8a..d52812021a1 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
@@ -210,8 +210,8 @@ SetViewPort(
* the width,height is calculated including both pixels
* therefore: max - min + 1
*/
- int vp_width = (x2 - x1) + 1;
- int vp_height = (y2 - y1) + 1;
+ int vp_width = (x2 - x1);
+ int vp_height = (y2 - y1);
int minx = m_frame_rect.GetLeft();
int miny = m_frame_rect.GetBottom();
diff --git a/source/gameengine/GamePlayer/common/GPC_Canvas.cpp b/source/gameengine/GamePlayer/common/GPC_Canvas.cpp
index 2b355407d46..b3963e9f8f2 100644
--- a/source/gameengine/GamePlayer/common/GPC_Canvas.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_Canvas.cpp
@@ -97,11 +97,11 @@ void GPC_Canvas::SetViewPort(int x1, int y1, int x2, int y2)
m_viewport[0] = x1;
m_viewport[1] = y1;
- m_viewport[2] = x2-x1 + 1;
- m_viewport[3] = y2-y1 + 1;
+ m_viewport[2] = x2-x1;
+ m_viewport[3] = y2-y1;
- glViewport(x1,y1,x2-x1 + 1,y2-y1 + 1);
- glScissor(x1,y1,x2-x1 + 1,y2-y1 + 1);
+ glViewport(x1,y1,x2-x1,y2-y1);
+ glScissor(x1,y1,x2-x1,y2-y1);
}
void GPC_Canvas::UpdateViewPort(int x1, int y1, int x2, int y2)
diff --git a/source/gameengine/Ketsji/KX_Dome.cpp b/source/gameengine/Ketsji/KX_Dome.cpp
index d08372e47d4..878e21d38b2 100644
--- a/source/gameengine/Ketsji/KX_Dome.cpp
+++ b/source/gameengine/Ketsji/KX_Dome.cpp
@@ -2018,7 +2018,7 @@ void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i)
if (!cam)
return;
- m_canvas->SetViewPort(0,0,m_buffersize-1,m_buffersize-1);
+ m_canvas->SetViewPort(0,0,m_buffersize,m_buffersize);
// m_rasterizer->SetAmbient();
m_rasterizer->DisplayFog();
diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
index 780ff9ba13b..6709d7d0997 100644
--- a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
@@ -399,8 +399,8 @@ void RAS_2DFilterManager::SetupTextures(bool depth, bool luminance)
void RAS_2DFilterManager::UpdateOffsetMatrix(RAS_ICanvas* canvas)
{
/* RAS_Rect canvas_rect = canvas->GetWindowArea(); */ /* UNUSED */
- texturewidth = canvas->GetWidth()+1;
- textureheight = canvas->GetHeight()+1;
+ texturewidth = canvas->GetWidth();
+ textureheight = canvas->GetHeight();
GLint i,j;
if (!GL_ARB_texture_non_power_of_two)
@@ -508,8 +508,8 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas)
glScissor(scissor_rect.GetLeft() + viewport[0],
scissor_rect.GetBottom() + viewport[1],
- scissor_rect.GetWidth() + 1,
- scissor_rect.GetHeight() + 1);
+ scissor_rect.GetWidth(),
+ scissor_rect.GetHeight());
glDisable(GL_DEPTH_TEST);
// in case the previous material was wire
diff --git a/source/gameengine/VideoTexture/ImageRender.cpp b/source/gameengine/VideoTexture/ImageRender.cpp
index 5147cb1fbb1..81721e2d5a4 100644
--- a/source/gameengine/VideoTexture/ImageRender.cpp
+++ b/source/gameengine/VideoTexture/ImageRender.cpp
@@ -268,7 +268,7 @@ bool ImageRender::Render()
m_canvas->UpdateViewPort(0, 0, m_offscreen->ofs->GetWidth(), m_offscreen->ofs->GetHeight());
}
else {
- m_canvas->SetViewPort(m_position[0], m_position[1], m_position[0]+m_capSize[0]-1, m_position[1]+m_capSize[1]-1);
+ m_canvas->SetViewPort(m_position[0], m_position[1], m_position[0]+m_capSize[0], m_position[1]+m_capSize[1]);
}
m_canvas->ClearColor(m_background[0], m_background[1], m_background[2], m_background[3]);
m_canvas->ClearBuffer(RAS_ICanvas::COLOR_BUFFER|RAS_ICanvas::DEPTH_BUFFER);