Support setting y_inverted for Texture.
At least needed for the pixmaps loaded by EGL. Should be save on GLX as well, if not it needs fixing
This commit is contained in:
parent
aef6208fdc
commit
ea12f95b27
2 changed files with 16 additions and 8 deletions
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue