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();
+8 -1
View File
@@ -19,6 +19,9 @@
#undef __glext_h_
#include "glext.h"
/* Import RageDisplay, for types. Do not include RageDisplay_OGL.h. */
#include "RageDisplay.h"
/* Windows defines GL_EXT_paletted_texture incompletely: */
#ifndef GL_TEXTURE_INDEX_SIZE_EXT
#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
@@ -33,7 +36,6 @@ namespace RageDisplay_OGL_Helpers
RString GLToString( GLenum e );
};
struct RenderTargetParam;
class RenderTarget
{
public:
@@ -50,6 +52,11 @@ public:
virtual void FinishRenderingTo() = 0;
virtual bool InvertY() const { return false; }
const RenderTargetParam &GetParam() const { return m_Param; }
protected:
RenderTargetParam m_Param;
};
class LowLevelWindow;