forked from 0ad/0ad
Moves management of GL viewports to CRenderer, letting it store the current viewport; calling code can retrieve and restore it later (instead of using deprecated glPush/PopAttrib, previously removed for GLES compatibility by 7dec618898
)
This was SVN commit r14235.
This commit is contained in:
parent
8b0f1c3f1f
commit
acf1c420c1
@ -148,7 +148,9 @@ void CLOSTexture::InterpolateLOS()
|
||||
|
||||
shader->Uniform(str_delta, (float)g_Renderer.GetTimeManager().GetFrameDelta() * 4.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
glViewport(0, 0, m_TextureSize, m_TextureSize);
|
||||
const SViewPort oldVp = g_Renderer.GetViewport();
|
||||
const SViewPort vp = { 0, 0, m_TextureSize, m_TextureSize };
|
||||
g_Renderer.SetViewport(vp);
|
||||
|
||||
float quadVerts[] = {
|
||||
1.0f, 1.0f,
|
||||
@ -173,7 +175,7 @@ void CLOSTexture::InterpolateLOS()
|
||||
shader->AssertPointersBound();
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
glViewport(0, 0, g_xres, g_yres);
|
||||
g_Renderer.SetViewport(oldVp);
|
||||
|
||||
shader->Unbind();
|
||||
m_smoothShader->EndPass();
|
||||
|
@ -195,7 +195,9 @@ void CPostprocManager::ApplyBlurDownscale2x(GLuint inTex, GLuint outTex, int inW
|
||||
|
||||
shader->BindTexture(str_renderedTex, renderedTex);
|
||||
|
||||
glViewport(0, 0, inWidth / 2, inHeight / 2);
|
||||
const SViewPort oldVp = g_Renderer.GetViewport();
|
||||
const SViewPort vp = { 0, 0, inWidth / 2, inHeight / 2 };
|
||||
g_Renderer.SetViewport(vp);
|
||||
|
||||
float quadVerts[] = {
|
||||
1.0f, 1.0f,
|
||||
@ -220,7 +222,7 @@ void CPostprocManager::ApplyBlurDownscale2x(GLuint inTex, GLuint outTex, int inW
|
||||
shader->AssertPointersBound();
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
glViewport(0, 0, g_xres, g_yres);
|
||||
g_Renderer.SetViewport(oldVp);
|
||||
|
||||
tech->EndPass();
|
||||
}
|
||||
@ -242,7 +244,9 @@ void CPostprocManager::ApplyBlurGauss(GLuint inOutTex, GLuint tempTex, int inWid
|
||||
shader->BindTexture(str_renderedTex, inOutTex);
|
||||
shader->Uniform(str_texSize, inWidth, inHeight, 0.0f, 0.0f);
|
||||
|
||||
glViewport(0, 0, inWidth, inHeight);
|
||||
const SViewPort oldVp = g_Renderer.GetViewport();
|
||||
const SViewPort vp = { 0, 0, inWidth, inHeight };
|
||||
g_Renderer.SetViewport(vp);
|
||||
|
||||
float quadVerts[] = {
|
||||
1.0f, 1.0f,
|
||||
@ -267,7 +271,7 @@ void CPostprocManager::ApplyBlurGauss(GLuint inOutTex, GLuint tempTex, int inWid
|
||||
shader->AssertPointersBound();
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
glViewport(0, 0, g_xres, g_yres);
|
||||
g_Renderer.SetViewport(oldVp);
|
||||
|
||||
tech->EndPass();
|
||||
|
||||
@ -287,15 +291,15 @@ void CPostprocManager::ApplyBlurGauss(GLuint inOutTex, GLuint tempTex, int inWid
|
||||
// Our input texture to the shader is the output of the horizontal pass.
|
||||
shader->BindTexture(str_renderedTex, tempTex);
|
||||
shader->Uniform(str_texSize, inWidth, inHeight, 0.0f, 0.0f);
|
||||
|
||||
glViewport(0, 0, inWidth, inHeight);
|
||||
|
||||
g_Renderer.SetViewport(vp);
|
||||
|
||||
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, 0, quadTex);
|
||||
shader->VertexPointer(2, GL_FLOAT, 0, quadVerts);
|
||||
shader->AssertPointersBound();
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
glViewport(0, 0, g_xres, g_yres);
|
||||
g_Renderer.SetViewport(oldVp);
|
||||
|
||||
tech->EndPass();
|
||||
}
|
||||
|
@ -350,8 +350,7 @@ public:
|
||||
glLoadMatrixf(&view._11);
|
||||
#endif
|
||||
|
||||
const SViewPort &vp = camera.GetViewPort();
|
||||
glViewport((GLint)vp.m_X,(GLint)vp.m_Y,(GLsizei)vp.m_Width,(GLsizei)vp.m_Height);
|
||||
g_Renderer.SetViewport(camera.GetViewPort());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1696,9 +1695,15 @@ void CRenderer::SetSceneCamera(const CCamera& viewCamera, const CCamera& cullCam
|
||||
|
||||
void CRenderer::SetViewport(const SViewPort &vp)
|
||||
{
|
||||
m_Viewport = vp;
|
||||
glViewport((GLint)vp.m_X,(GLint)vp.m_Y,(GLsizei)vp.m_Width,(GLsizei)vp.m_Height);
|
||||
}
|
||||
|
||||
SViewPort CRenderer::GetViewport()
|
||||
{
|
||||
return m_Viewport;
|
||||
}
|
||||
|
||||
void CRenderer::Submit(CPatch* patch)
|
||||
{
|
||||
m->terrainRenderer.Submit(patch);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2012 Wildfire Games.
|
||||
/* Copyright (C) 2013 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -220,6 +220,9 @@ public:
|
||||
// set the viewport
|
||||
void SetViewport(const SViewPort &);
|
||||
|
||||
// get the last viewport
|
||||
SViewPort GetViewport();
|
||||
|
||||
/**
|
||||
* Render the given scene immediately.
|
||||
* @param scene a Scene object describing what should be rendered.
|
||||
@ -396,6 +399,8 @@ protected:
|
||||
|
||||
CShaderDefines m_SystemShaderDefines;
|
||||
|
||||
SViewPort m_Viewport;
|
||||
|
||||
/**
|
||||
* m_ViewCamera: determines the eye position for rendering
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2012 Wildfire Games.
|
||||
/* Copyright (C) 2013 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -479,7 +479,8 @@ void ShadowMap::BeginRender()
|
||||
}
|
||||
|
||||
// setup viewport
|
||||
glViewport(0, 0, m->EffectiveWidth, m->EffectiveHeight);
|
||||
const SViewPort vp = { 0, 0, m->EffectiveWidth, m->EffectiveHeight };
|
||||
g_Renderer.SetViewport(vp);
|
||||
|
||||
m->SavedViewCamera = g_Renderer.GetViewCamera();
|
||||
|
||||
@ -513,7 +514,8 @@ void ShadowMap::EndRender()
|
||||
pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m->SavedViewFBO);
|
||||
}
|
||||
|
||||
glViewport(0, 0, g_Renderer.GetWidth(), g_Renderer.GetHeight());
|
||||
const SViewPort vp = { 0, 0, g_Renderer.GetWidth(), g_Renderer.GetHeight() };
|
||||
g_Renderer.SetViewport(vp);
|
||||
|
||||
glColorMask(1,1,1,1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user