invert RenderTarget_FramebufferObject

set viewport
This commit is contained in:
Glenn Maynard
2006-07-29 00:23:44 +00:00
parent 3c15c15aa2
commit e57aa00b2a
2 changed files with 20 additions and 1 deletions
+12
View File
@@ -1909,6 +1909,8 @@ public:
void StartRenderingTo();
void FinishRenderingTo();
virtual bool InvertY() const { return true; }
private:
unsigned int m_iFrameBufferHandle;
unsigned int m_iTexHandle;
@@ -1934,6 +1936,8 @@ RenderTarget_FramebufferObject::~RenderTarget_FramebufferObject()
void RenderTarget_FramebufferObject::Create( const RenderTargetParam &param, int &iTextureWidthOut, int &iTextureHeightOut )
{
m_Param = param;
FlushGLErrors();
// Allocate OpenGL texture resource
@@ -2041,6 +2045,11 @@ void RageDisplay_OGL::SetRenderTarget( unsigned iTexture, bool bPreserveTexture
g_bInvertY = false;
glFrontFace( GL_CCW );
/* Reset the viewport. */
int fWidth = g_pWind->GetActualVideoModeParams().width;
int fHeight = g_pWind->GetActualVideoModeParams().height;
glViewport( 0, 0, fWidth, fHeight );
if( g_pCurrentRenderTarget )
g_pCurrentRenderTarget->FinishRenderingTo();
g_pCurrentRenderTarget = NULL;
@@ -2057,6 +2066,9 @@ void RageDisplay_OGL::SetRenderTarget( unsigned iTexture, bool bPreserveTexture
pTarget->StartRenderingTo();
g_pCurrentRenderTarget = pTarget;
/* Set the viewport to the size of the render target. */
glViewport( 0, 0, pTarget->GetParam().iWidth, pTarget->GetParam().iHeight );
/* If this render target implementation flips Y, compensate. Inverting will
* switch the winding order. */
g_bInvertY = pTarget->InvertY();