From 2a4cff24ce61a830f7a119f33cb94c4eff78772e Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 9 Jan 2014 14:02:34 +0200 Subject: Implement public utility function for AA setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qDefaultSurfaceFormat() can be used to set up antialiasing for QML apps in just two lines: ... viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); Task-number: QTRD-2734 Change-Id: I3f7ba728cef6310d794256e1dc4c28cc33b2f9a3 Reviewed-by: Pasi Keränen --- examples/qmlbars/main.cpp | 10 +---- examples/qmlcustominput/main.cpp | 10 +---- examples/qmlscatter/main.cpp | 10 +---- examples/qmlsurface/main.cpp | 10 +---- src/datavisualization/engine/qabstract3dgraph.cpp | 17 ++++---- .../global/datavisualizationglobal_p.h | 2 +- .../global/qdatavisualizationglobal.h | 2 +- src/datavisualization/utils/qutils.h | 48 ++++++++++++++++++++++ src/datavisualization/utils/utils.pri | 3 +- tests/qmlcamera/main.cpp | 10 +---- tests/qmldynamicdata/main.cpp | 10 +---- tests/qmlmultigraph/main.cpp | 10 +---- 12 files changed, 73 insertions(+), 69 deletions(-) create mode 100644 src/datavisualization/utils/qutils.h diff --git a/examples/qmlbars/main.cpp b/examples/qmlbars/main.cpp index 889e2fa4..dbf03aff 100644 --- a/examples/qmlbars/main.cpp +++ b/examples/qmlbars/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" #ifdef Q_OS_ANDROID @@ -30,15 +31,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); diff --git a/examples/qmlcustominput/main.cpp b/examples/qmlcustominput/main.cpp index 8724e511..d4791861 100644 --- a/examples/qmlcustominput/main.cpp +++ b/examples/qmlcustominput/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" #ifdef Q_OS_ANDROID @@ -30,15 +31,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); diff --git a/examples/qmlscatter/main.cpp b/examples/qmlscatter/main.cpp index 159612e9..2238a50e 100644 --- a/examples/qmlscatter/main.cpp +++ b/examples/qmlscatter/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" #ifdef Q_OS_ANDROID @@ -30,15 +31,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); diff --git a/examples/qmlsurface/main.cpp b/examples/qmlsurface/main.cpp index 21c987b3..e9ad8bc5 100644 --- a/examples/qmlsurface/main.cpp +++ b/examples/qmlsurface/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" @@ -30,15 +31,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index 3aada9cf..01974e54 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -21,6 +21,7 @@ #include "abstract3dcontroller_p.h" #include "qabstract3dinputhandler_p.h" #include "q3dscene_p.h" +#include "qutils.h" #include #include @@ -65,19 +66,15 @@ QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, const QSurfaceFor QSurfaceFormat surfaceFormat; if (format) { surfaceFormat = *format; - } else { - surfaceFormat.setDepthBufferSize(24); + // Make sure renderable type is correct #if !defined(QT_OPENGL_ES_2) - surfaceFormat.setSamples(8); -#endif - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - } - -#if !defined(QT_OPENGL_ES_2) - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); + surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); #else - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGLES); + surfaceFormat.setRenderableType(QSurfaceFormat::OpenGLES); #endif + } else { + surfaceFormat = qDefaultSurfaceFormat(); + } d_ptr->m_context = new QOpenGLContext(this); setSurfaceType(QWindow::OpenGLSurface); diff --git a/src/datavisualization/global/datavisualizationglobal_p.h b/src/datavisualization/global/datavisualizationglobal_p.h index 86b454c9..8ff36a90 100644 --- a/src/datavisualization/global/datavisualizationglobal_p.h +++ b/src/datavisualization/global/datavisualizationglobal_p.h @@ -59,4 +59,4 @@ static const GLfloat gradientTextureWidth = 2.0f; QT_DATAVISUALIZATION_END_NAMESPACE -#endif // DATAVISUALIZATIONGLOBAL_P_H +#endif diff --git a/src/datavisualization/global/qdatavisualizationglobal.h b/src/datavisualization/global/qdatavisualizationglobal.h index 1c118664..a125e4b2 100644 --- a/src/datavisualization/global/qdatavisualizationglobal.h +++ b/src/datavisualization/global/qdatavisualizationglobal.h @@ -64,4 +64,4 @@ # define QT_DATAVISUALIZATION_USE_NAMESPACE #endif -#endif // QVIS3DGLOBAL_H +#endif diff --git a/src/datavisualization/utils/qutils.h b/src/datavisualization/utils/qutils.h new file mode 100644 index 00000000..9ae66e6b --- /dev/null +++ b/src/datavisualization/utils/qutils.h @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#ifndef QUTILS_H +#define QUTILS_H + +#include + +namespace QtDataVisualization { + +inline static QSurfaceFormat qDefaultSurfaceFormat(bool antialias = true) +{ + QSurfaceFormat surfaceFormat; + + surfaceFormat.setDepthBufferSize(24); + surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); +#if !defined(QT_OPENGL_ES_2) + surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); +#else + // Antialias not supported for ES + antialias = false; + surfaceFormat.setRenderableType(QSurfaceFormat::OpenGLES); +#endif + + if (antialias) + surfaceFormat.setSamples(8); + + return surfaceFormat; +} + +} + +#endif diff --git a/src/datavisualization/utils/utils.pri b/src/datavisualization/utils/utils.pri index cef5ebf0..8ce8794e 100644 --- a/src/datavisualization/utils/utils.pri +++ b/src/datavisualization/utils/utils.pri @@ -6,7 +6,8 @@ HEADERS += $$PWD/meshloader_p.h \ $$PWD/texturehelper_p.h \ $$PWD/utils_p.h \ $$PWD/abstractobjecthelper_p.h \ - $$PWD/surfaceobject_p.h + $$PWD/surfaceobject_p.h \ + $$PWD/qutils.h SOURCES += $$PWD/meshloader.cpp \ $$PWD/vertexindexer.cpp \ diff --git a/tests/qmlcamera/main.cpp b/tests/qmlcamera/main.cpp index f35e9fc8..ca5a7088 100644 --- a/tests/qmlcamera/main.cpp +++ b/tests/qmlcamera/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" @@ -25,15 +26,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); diff --git a/tests/qmldynamicdata/main.cpp b/tests/qmldynamicdata/main.cpp index aedc026e..c2f52252 100644 --- a/tests/qmldynamicdata/main.cpp +++ b/tests/qmldynamicdata/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" #ifdef Q_OS_ANDROID @@ -30,15 +31,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); diff --git a/tests/qmlmultigraph/main.cpp b/tests/qmlmultigraph/main.cpp index d4fb669f..9d9e5d8a 100644 --- a/tests/qmlmultigraph/main.cpp +++ b/tests/qmlmultigraph/main.cpp @@ -16,6 +16,7 @@ ** ****************************************************************************/ +#include #include #include "qtquick2applicationviewer.h" #ifdef Q_OS_ANDROID @@ -30,15 +31,8 @@ int main(int argc, char *argv[]) QtQuick2ApplicationViewer viewer; -#if !defined(QT_OPENGL_ES_2) // Enable antialiasing - QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); - surfaceFormat.setSamples(8); - surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); - viewer.setFormat(surfaceFormat); -#endif + viewer.setFormat(QtDataVisualization::qDefaultSurfaceFormat()); #ifdef Q_OS_ANDROID viewer.addImportPath(QString::fromLatin1("assets:/qml")); -- cgit v1.2.3