diff options
author | Samuel Rødal <sroedal@trolltech.com> | 2009-09-01 12:16:08 (GMT) |
---|---|---|
committer | Samuel Rødal <sroedal@trolltech.com> | 2009-09-01 12:26:14 (GMT) |
commit | e0e0ae322e654b0b152fc54d99201b18b620a0ed (patch) | |
tree | 139382ebd9675decb9cac1c57ffea36dd91dda68 | |
parent | ae2f5c66d16fab9f92f960435057d955e9a832ef (diff) | |
download | Qt-e0e0ae322e654b0b152fc54d99201b18b620a0ed.zip Qt-e0e0ae322e654b0b152fc54d99201b18b620a0ed.tar.gz Qt-e0e0ae322e654b0b152fc54d99201b18b620a0ed.tar.bz2 |
Fixed toImage() not working on a multisample QGLFramebufferObject.
Need to blit into a regular QGLFramebufferObject first to force a
multisample resolve.
Reviewed-by: Trond
-rw-r--r-- | src/opengl/qglframebufferobject.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp index 859afc7..8fd113a 100644 --- a/src/opengl/qglframebufferobject.cpp +++ b/src/opengl/qglframebufferobject.cpp @@ -875,6 +875,16 @@ QImage QGLFramebufferObject::toImage() const if (!d->valid) return QImage(); + // qt_gl_read_framebuffer doesn't work on a multisample FBO + if (format().samples() != 0) { + QGLFramebufferObject temp(size()); + + QRect rect(QPoint(0, 0), size()); + blitFramebuffer(&temp, rect, const_cast<QGLFramebufferObject *>(this), rect); + + return temp.toImage(); + } + bool wasBound = isBound(); if (!wasBound) const_cast<QGLFramebufferObject *>(this)->bind(); |