From 9cc5a9f312dfb982044f5756bb5b857657378b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Mon, 15 Sep 2014 12:45:03 +0300 Subject: Fixed renderToImage for ES2 Task-number: QTRD-3305 Change-Id: I656cc878e6e83fe09d627b418f9cf624672a18b3 Reviewed-by: Miikka Heikkinen --- src/datavisualization/engine/qabstract3dgraph.cpp | 6 ++++++ src/datavisualization/utils/qutils.h | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index 03eeedf6..a1cd7c56 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -545,6 +545,8 @@ QAbstract3DGraph::ElementType QAbstract3DGraph::selectedElement() const * \since QtDataVisualization 1.1 * * \return rendered image. + * + * \note OpenGL ES2 does not support anitialiasing, so \a msaaSamples is always forced to \c{0}. */ QImage QAbstract3DGraph::renderToImage(int msaaSamples, const QSize &imageSize) { @@ -975,8 +977,12 @@ QImage QAbstract3DGraphPrivate::renderToImage(int msaaSamples, const QSize &imag // Render the wanted frame offscreen m_context->makeCurrent(m_offscreenSurface); fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); +#ifdef QT_OPENGL_ES_2 + Q_UNUSED(msaaSamples); +#else fboFormat.setInternalTextureFormat(GL_RGB); fboFormat.setSamples(msaaSamples); +#endif fbo = new QOpenGLFramebufferObject(imageSize, fboFormat); if (fbo->isValid()) { QRect originalViewport = m_visualController->m_scene->viewport(); diff --git a/src/datavisualization/utils/qutils.h b/src/datavisualization/utils/qutils.h index b4ac17b4..92bd632c 100644 --- a/src/datavisualization/utils/qutils.h +++ b/src/datavisualization/utils/qutils.h @@ -36,10 +36,16 @@ inline static QSurfaceFormat qDefaultSurfaceFormat(bool antialias = true) // Antialias not supported for ES antialias = false; surfaceFormat.setRenderableType(QSurfaceFormat::OpenGLES); + surfaceFormat.setAlphaBufferSize(8); + surfaceFormat.setRedBufferSize(8); + surfaceFormat.setBlueBufferSize(8); + surfaceFormat.setGreenBufferSize(8); #endif if (antialias) surfaceFormat.setSamples(8); + else + surfaceFormat.setSamples(0); return surfaceFormat; } -- cgit v1.2.3