From 52958ffc70945bc82db771c4df4636d9d5dc6232 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 11 Apr 2016 13:28:18 -0700 Subject: [PATCH] Move gl info queries to GLHelpers --- libraries/gl/src/gl/GLHelpers.cpp | 19 +++++++++++++++++++ libraries/gl/src/gl/GLHelpers.h | 4 ++++ libraries/gl/src/gl/OpenGLVersionChecker.cpp | 15 +++++---------- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/libraries/gl/src/gl/GLHelpers.cpp b/libraries/gl/src/gl/GLHelpers.cpp index c9de3ccd90..6b807d8baf 100644 --- a/libraries/gl/src/gl/GLHelpers.cpp +++ b/libraries/gl/src/gl/GLHelpers.cpp @@ -4,6 +4,7 @@ #include #include +#include const QSurfaceFormat& getDefaultOpenGLSurfaceFormat() { static QSurfaceFormat format; @@ -35,3 +36,21 @@ const QGLFormat& getDefaultGLFormat() { }); return glFormat; } + +QJsonObject getGLContextData() { + if (!QOpenGLContext::currentContext()) { + return QJsonObject(); + } + + QString glVersion = QString((const char*)glGetString(GL_VERSION)); + QString glslVersion = QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); + QString glVendor = QString((const char*) glGetString(GL_VENDOR)); + QString glRenderer = QString((const char*)glGetString(GL_RENDERER)); + + return QJsonObject { + { "version", glVersion }, + { "slVersion", glslVersion }, + { "vendor", glVendor }, + { "renderer", glRenderer }, + }; +} diff --git a/libraries/gl/src/gl/GLHelpers.h b/libraries/gl/src/gl/GLHelpers.h index 335272d991..b88284c24a 100644 --- a/libraries/gl/src/gl/GLHelpers.h +++ b/libraries/gl/src/gl/GLHelpers.h @@ -10,6 +10,8 @@ #ifndef hifi_GLHelpers_h #define hifi_GLHelpers_h +#include + // 16 bits of depth precision #define DEFAULT_GL_DEPTH_BUFFER_BITS 16 // 8 bits of stencil buffer (typically you really only need 1 bit for functionality @@ -21,4 +23,6 @@ class QGLFormat; const QSurfaceFormat& getDefaultOpenGLSurfaceFormat(); const QGLFormat& getDefaultGLFormat(); +QJsonObject getGLContextData(); + #endif diff --git a/libraries/gl/src/gl/OpenGLVersionChecker.cpp b/libraries/gl/src/gl/OpenGLVersionChecker.cpp index 05dfc05457..843385f720 100644 --- a/libraries/gl/src/gl/OpenGLVersionChecker.cpp +++ b/libraries/gl/src/gl/OpenGLVersionChecker.cpp @@ -17,6 +17,7 @@ #include "Config.h" #include "GLWidget.h" +#include "GLHelpers.h" OpenGLVersionChecker::OpenGLVersionChecker(int& argc, char** argv) : QApplication(argc, argv) @@ -44,10 +45,7 @@ QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { // Retrieve OpenGL version glWidget->initializeGL(); - QString glVersion = QString((const char*)glGetString(GL_VERSION)); - QString glslVersion = QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); - QString glVendor = QString((const char*) glGetString(GL_VENDOR)); - QString glRenderer = QString((const char*)glGetString(GL_RENDERER)); + QJsonObject glData = getGLContextData(); delete glWidget; // Compare against minimum @@ -55,6 +53,8 @@ QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { // - major_number.minor_number // - major_number.minor_number.release_number // Reference: https://www.opengl.org/sdk/docs/man/docbook4/xhtml/glGetString.xml + const QString version { "version" }; + QString glVersion = glData[version].toString(); QStringList versionParts = glVersion.split(QRegularExpression("[\\.\\s]")); int majorNumber = versionParts[0].toInt(); int minorNumber = versionParts[1].toInt(); @@ -76,10 +76,5 @@ QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { override = messageBox.exec() == QMessageBox::Ignore; } - return QJsonObject{ - { "version", glVersion }, - { "slVersion", glslVersion }, - { "vendor", glVendor }, - { "renderer", glRenderer }, - }; + return glData; }