diff --git a/scene_opengl.cpp b/scene_opengl.cpp index 1453a39f0a..7fb95aa2fa 100644 --- a/scene_opengl.cpp +++ b/scene_opengl.cpp @@ -1016,7 +1016,7 @@ void SceneOpenGL::Window::restoreRenderStates( TextureType type, double opacity, // SceneOpenGL::EffectFrame //**************************************** -GLTexture* SceneOpenGL::EffectFrame::m_unstyledTexture = NULL; +SceneOpenGL::Texture* SceneOpenGL::EffectFrame::m_unstyledTexture = NULL; QPixmap* SceneOpenGL::EffectFrame::m_unstyledPixmap = NULL; SceneOpenGL::EffectFrame::EffectFrame( EffectFrameImpl* frame ) @@ -1299,6 +1299,7 @@ void SceneOpenGL::EffectFrame::render( QRegion region, double opacity, double fr { QPixmap pixmap = m_effectFrame->selectionFrame().framePixmap(); m_selectionTexture = new Texture( pixmap.handle(), pixmap.size(), pixmap.depth() ); + m_selectionTexture->setYInverted(true); } glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ); m_selectionTexture->bind(); @@ -1348,6 +1349,7 @@ void SceneOpenGL::EffectFrame::render( QRegion region, double opacity, double fr m_iconTexture = new Texture( m_effectFrame->icon().handle(), m_effectFrame->icon().size(), m_effectFrame->icon().depth() ); + m_iconTexture->setYInverted(true); } m_iconTexture->bind(); m_iconTexture->render( region, QRect( topLeft, m_effectFrame->iconSize() ), sceneShader ); @@ -1408,6 +1410,7 @@ void SceneOpenGL::EffectFrame::updateTexture() { QPixmap pixmap = m_effectFrame->frame().framePixmap(); m_texture = new Texture( pixmap.handle(), pixmap.size(), pixmap.depth() ); + m_texture->setYInverted(true); } } @@ -1443,6 +1446,7 @@ void SceneOpenGL::EffectFrame::updateTextTexture() p.drawText( rect, m_effectFrame->alignment(), text ); p.end(); m_textTexture = new Texture( m_textPixmap->handle(), m_textPixmap->size(), m_textPixmap->depth() ); + m_textTexture->setYInverted(true); } void SceneOpenGL::EffectFrame::updateUnstyledTexture() @@ -1461,6 +1465,7 @@ void SceneOpenGL::EffectFrame::updateUnstyledTexture() p.end(); #undef CS m_unstyledTexture = new Texture( m_unstyledPixmap->handle(), m_unstyledPixmap->size(), m_unstyledPixmap->depth() ); + m_unstyledTexture->setYInverted(true); } void SceneOpenGL::EffectFrame::cleanup() diff --git a/scene_opengl.h b/scene_opengl.h index bab6ae3057..b47b745fd7 100644 --- a/scene_opengl.h +++ b/scene_opengl.h @@ -125,6 +125,9 @@ class SceneOpenGL::Texture virtual void release(); // undo the tfp_mode binding virtual void bind(); virtual void unbind(); + void setYInverted(bool inverted) { + y_inverted = inverted; + } protected: void findTarget(); @@ -203,16 +206,16 @@ class SceneOpenGL::EffectFrame void updateTexture(); void updateTextTexture(); - GLTexture* m_texture; - GLTexture* m_textTexture; - GLTexture* m_oldTextTexture; + Texture* m_texture; + Texture* m_textTexture; + Texture* m_oldTextTexture; QPixmap* m_textPixmap; // need to keep the pixmap around to workaround some driver problems - GLTexture* m_iconTexture; - GLTexture* m_oldIconTexture; - GLTexture* m_selectionTexture; + Texture* m_iconTexture; + Texture* m_oldIconTexture; + Texture* m_selectionTexture; GLVertexBuffer* m_unstyledVBO; - static GLTexture* m_unstyledTexture; + static Texture* m_unstyledTexture; static QPixmap* m_unstyledPixmap; // need to keep the pixmap around to workaround some driver problems static void updateUnstyledTexture(); // Update OpenGL unstyled frame texture };