diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-09 12:47:06 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-09 13:19:32 +0200 |
commit | 2203491ab2b639f3def805ea9cecbab1add32105 (patch) | |
tree | e2a8b2ac81638f608d70071d028b021274be298e /src/datavisualization/engine/qabstract3dgraph.cpp | |
parent | 450dc3e6d74ffe93a761a5e2491458935ecac7b7 (diff) |
Enable using custom surface format for c++ graphs
Main benefit is to be able to opt out of antialiasing.
Task-number: QTRD-2734
Change-Id: Ic0681356f93d55e87535910a533be3f845703044
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/qabstract3dgraph.cpp')
-rw-r--r-- | src/datavisualization/engine/qabstract3dgraph.cpp | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index f17319d5..3aada9cf 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -55,23 +55,32 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE /*! * \internal */ -QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, QWindow *parent) +QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, const QSurfaceFormat *format, QWindow *parent) : QWindow(parent), d_ptr(d) { - d_ptr->m_context = new QOpenGLContext(this); - + // Default to frameless window, as typically graphs are not toplevel setFlags(flags() | Qt::FramelessWindowHint); - setSurfaceType(QWindow::OpenGLSurface); + QSurfaceFormat surfaceFormat; - surfaceFormat.setDepthBufferSize(24); + if (format) { + surfaceFormat = *format; + } else { + surfaceFormat.setDepthBufferSize(24); +#if !defined(QT_OPENGL_ES_2) + surfaceFormat.setSamples(8); +#endif + surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); + } + #if !defined(QT_OPENGL_ES_2) - surfaceFormat.setSamples(8); surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL); #else surfaceFormat.setRenderableType(QSurfaceFormat::OpenGLES); #endif - surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer); + + d_ptr->m_context = new QOpenGLContext(this); + setSurfaceType(QWindow::OpenGLSurface); setFormat(surfaceFormat); create(); @@ -82,13 +91,16 @@ QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, QWindow *parent) initializeOpenGLFunctions(); - const GLubyte *version = glGetString(GL_VERSION); - qDebug() << "OpenGL version:" << (const char *)version; - version = glGetString(GL_SHADING_LANGUAGE_VERSION); - qDebug() << "GLSL version:" << (const char *)version; + const GLubyte *shaderVersion = glGetString(GL_SHADING_LANGUAGE_VERSION); +#ifndef QT_NO_DEBUG + const GLubyte *openGLVersion = glGetString(GL_VERSION); + qDebug() << "OpenGL version:" << (const char *)openGLVersion; + qDebug() << "GLSL version:" << (const char *)shaderVersion; +#endif + #if !defined(QT_OPENGL_ES_2) // If we have real OpenGL, GLSL version must be 1.2 or over. Quit if not. - QStringList splitversionstr = QString::fromLatin1((const char *)version).split(QChar::fromLatin1(' ')); + QStringList splitversionstr = QString::fromLatin1((const char *)shaderVersion).split(QChar::fromLatin1(' ')); if (splitversionstr[0].toFloat() < 1.2) qFatal("GLSL version must be 1.20 or higher. Try installing latest display drivers."); #endif |