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 StartRenderingTo();
void FinishRenderingTo(); void FinishRenderingTo();
virtual bool InvertY() const { return true; }
private: private:
unsigned int m_iFrameBufferHandle; unsigned int m_iFrameBufferHandle;
unsigned int m_iTexHandle; unsigned int m_iTexHandle;
@@ -1934,6 +1936,8 @@ RenderTarget_FramebufferObject::~RenderTarget_FramebufferObject()
void RenderTarget_FramebufferObject::Create( const RenderTargetParam &param, int &iTextureWidthOut, int &iTextureHeightOut ) void RenderTarget_FramebufferObject::Create( const RenderTargetParam &param, int &iTextureWidthOut, int &iTextureHeightOut )
{ {
m_Param = param;
FlushGLErrors(); FlushGLErrors();
// Allocate OpenGL texture resource // Allocate OpenGL texture resource
@@ -2041,6 +2045,11 @@ void RageDisplay_OGL::SetRenderTarget( unsigned iTexture, bool bPreserveTexture
g_bInvertY = false; g_bInvertY = false;
glFrontFace( GL_CCW ); 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 ) if( g_pCurrentRenderTarget )
g_pCurrentRenderTarget->FinishRenderingTo(); g_pCurrentRenderTarget->FinishRenderingTo();
g_pCurrentRenderTarget = NULL; g_pCurrentRenderTarget = NULL;
@@ -2057,6 +2066,9 @@ void RageDisplay_OGL::SetRenderTarget( unsigned iTexture, bool bPreserveTexture
pTarget->StartRenderingTo(); pTarget->StartRenderingTo();
g_pCurrentRenderTarget = pTarget; 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 /* If this render target implementation flips Y, compensate. Inverting will
* switch the winding order. */ * switch the winding order. */
g_bInvertY = pTarget->InvertY(); g_bInvertY = pTarget->InvertY();
+8 -1
View File
@@ -19,6 +19,9 @@
#undef __glext_h_ #undef __glext_h_
#include "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: */ /* Windows defines GL_EXT_paletted_texture incompletely: */
#ifndef GL_TEXTURE_INDEX_SIZE_EXT #ifndef GL_TEXTURE_INDEX_SIZE_EXT
#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
@@ -33,7 +36,6 @@ namespace RageDisplay_OGL_Helpers
RString GLToString( GLenum e ); RString GLToString( GLenum e );
}; };
struct RenderTargetParam;
class RenderTarget class RenderTarget
{ {
public: public:
@@ -50,6 +52,11 @@ public:
virtual void FinishRenderingTo() = 0; virtual void FinishRenderingTo() = 0;
virtual bool InvertY() const { return false; } virtual bool InvertY() const { return false; }
const RenderTargetParam &GetParam() const { return m_Param; }
protected:
RenderTargetParam m_Param;
}; };
class LowLevelWindow; class LowLevelWindow;