From 10f0485464acebd281f37b78f9ab5d02ee4ada9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Breitmeyer?= Date: Tue, 25 Feb 2014 10:18:06 +0100 Subject: Fixed regression from fd5c629f4336b1f79 Buffer offsets were wrong, and a type in the buffer content. Task-number: QTBUG-36989 Change-Id: I863976420d495b006692c4b614f74c285649cb1a Reviewed-by: Mitch Curtis Reviewed-by: Sean Harmer Reviewed-by: Gunnar Sletta --- .../qsgdefaultdistancefieldglyphcache.cpp | 25 +++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp') diff --git a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp index 4a8d908d2f..a625eebd5d 100644 --- a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp +++ b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp @@ -69,7 +69,7 @@ QSGDefaultDistanceFieldGlyphCache::QSGDefaultDistanceFieldGlyphCache(QSGDistance { m_blitBuffer.create(); m_blitBuffer.bind(); - static GLfloat buffer[16] = {1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, + static GLfloat buffer[16] = {-1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f}; m_blitBuffer.allocate(buffer, sizeof(buffer)); m_blitBuffer.release(); @@ -405,13 +405,21 @@ void QSGDefaultDistanceFieldGlyphCache::resizeTexture(TextureInfo *texInfo, int glViewport(0, 0, oldWidth, oldHeight); - m_blitBuffer.bind(); - + const bool vaoInit = m_vao.isCreated(); + if (isCoreProfile()) { + if ( !vaoInit ) + m_vao.create(); + m_vao.bind(); + } m_blitProgram->bind(); - m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR)); - m_blitProgram->enableAttributeArray(int(QT_TEXTURE_COORDS_ATTR)); - m_blitProgram->setAttributeBuffer(int(QT_VERTEX_COORDS_ATTR), GL_FLOAT, 0, 2); - m_blitProgram->setAttributeBuffer(int(QT_TEXTURE_COORDS_ATTR), GL_FLOAT, 8, 2); + if (!vaoInit || !isCoreProfile()) { + m_blitBuffer.bind(); + + m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR)); + m_blitProgram->enableAttributeArray(int(QT_TEXTURE_COORDS_ATTR)); + m_blitProgram->setAttributeBuffer(int(QT_VERTEX_COORDS_ATTR), GL_FLOAT, 0, 2); + m_blitProgram->setAttributeBuffer(int(QT_TEXTURE_COORDS_ATTR), GL_FLOAT, 32, 2); + } m_blitProgram->disableAttributeArray(int(QT_OPACITY_ATTR)); m_blitProgram->setUniformValue("imageTexture", GLuint(0)); @@ -447,7 +455,8 @@ void QSGDefaultDistanceFieldGlyphCache::resizeTexture(TextureInfo *texInfo, int m_blitProgram->disableAttributeArray(int(QT_VERTEX_COORDS_ATTR)); m_blitProgram->disableAttributeArray(int(QT_TEXTURE_COORDS_ATTR)); - m_blitBuffer.release(); + if (isCoreProfile()) + m_vao.release(); } bool QSGDefaultDistanceFieldGlyphCache::useTextureResizeWorkaround() const -- cgit v1.2.3