From 97ba018492a25533fcb1f54e12799e52c48a3162 Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Fri, 20 Jan 2012 13:40:33 +0100 Subject: Allocate mipmaps in FBOs with glTexImage2D, not glGenerateMipmap. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I7b7d26da97f82f354d81913eccab46d79ec9e8f0 Reviewed-by: Samuel Rødal --- src/gui/opengl/qopenglframebufferobject.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/gui/opengl') diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp index df0e635673..bb723b7ce6 100644 --- a/src/gui/opengl/qopenglframebufferobject.cpp +++ b/src/gui/opengl/qopenglframebufferobject.cpp @@ -412,8 +412,18 @@ void QOpenGLFramebufferObjectPrivate::init(QOpenGLFramebufferObject *, const QSi glBindTexture(target, texture); glTexImage2D(target, 0, internal_format, size.width(), size.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - if (mipmap) - funcs.glGenerateMipmap(GL_TEXTURE_2D); + if (mipmap) { + int width = size.width(); + int height = size.height(); + int level = 0; + while (width > 1 || height > 1) { + width = (width + 1) >> 1; + height = (height + 1) >> 1; + ++level; + glTexImage2D(target, level, internal_format, width, height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + } + } glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -- cgit v1.2.3