From 42d3d48c3bf8ac7b73bca3c13b50e16db126251a Mon Sep 17 00:00:00 2001 From: ppiecuch Date: Wed, 13 Jul 2016 08:13:19 +0200 Subject: [PATCH 1/4] graphic for splashscreen --- Sources/resources/logo/splash.png | Bin 0 -> 58423 bytes Sources/resources/logo/splash.psd | Bin 0 -> 306776 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Sources/resources/logo/splash.png create mode 100644 Sources/resources/logo/splash.psd diff --git a/Sources/resources/logo/splash.png b/Sources/resources/logo/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e32a5eaaa185cb4d28fa672537ea9c4e98640853 GIT binary patch literal 58423 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 S#b*TwC_0)~G^*5WL;n{i>;7l} literal 0 HcmV?d00001 diff --git a/Sources/resources/logo/splash.psd b/Sources/resources/logo/splash.psd new file mode 100644 index 0000000000000000000000000000000000000000..def18e9c9fea8941e692bb47f3b0bb6fd6f35f76 GIT binary patch literal 306776 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

IW)NA=y1#wk^zu8AVp=F=kWK$;mc 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

de2jLr(RNGDtX8Tp?zw<5}&Flx7|GU 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 Date: Wed, 13 Jul 2016 22:31:09 +0200 Subject: [PATCH 2/4] removing .qmake.stash (auto-gen) from repository --- .qmake.stash | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .qmake.stash diff --git a/.qmake.stash b/.qmake.stash deleted file mode 100644 index cdb473b..0000000 --- a/.qmake.stash +++ /dev/null @@ -1,19 +0,0 @@ -QMAKE_XCODE_DEVELOPER_PATH = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer -QMAKE_XCODE_VERSION = 7.2 -QMAKE_MAC_SDK.macosx.path = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -QMAKE_MAC_SDK.macosx.platform_path = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform -QMAKE_MAC_SDK.macosx.version = 10.11 -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_CC = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_CXX = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_FIX_RPATH = \ - /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool \ - -id -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_AR = \ - /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar \ - cq -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_RANLIB = \ - /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib \ - -s -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_LINK = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -QMAKE_MAC_SDK.macx-clang.macosx.QMAKE_LINK_SHLIB = /Volumes/MacHDD/Users/piecuchp/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -QMAKE_MAC_SDK.macosx.platform_name = macosx From ceeba230bc5994242c85e3908c4ee14d096d1f8d Mon Sep 17 00:00:00 2001 From: ppiecuch Date: Thu, 14 Jul 2016 08:13:21 +0200 Subject: [PATCH 3/4] promo image for splash screen option --- Sources/resources/promo/splash.png | Bin 0 -> 48815 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Sources/resources/promo/splash.png diff --git a/Sources/resources/promo/splash.png b/Sources/resources/promo/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a14ab9f8b1420505bc47f8dc235ab161603e7b GIT binary patch literal 48815 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 H6#V}H>riE& literal 0 HcmV?d00001 From 0d9710832f6ef564a78a8c9c86759a1b8813a823 Mon Sep 17 00:00:00 2001 From: ppiecuch Date: Mon, 18 Jul 2016 20:24:04 +0200 Subject: [PATCH 4/4] implementing splashscreen at startup --- Sources/Sources.pro | 60 ++-- Sources/allaboutdialog.cpp | 3 +- Sources/content.qrc | 1 + Sources/main.cpp | 140 ++++++-- Sources/mainwindow.cpp | 94 ++--- Sources/mainwindow.h | 33 +- Sources/properties/propertyconstructor.h | 14 +- Sources/utils/DebugMetricsMonitor.cpp | 114 ++++++ Sources/utils/DebugMetricsMonitor.h | 185 ++++++++++ Sources/utils/contextinfo/contextwidget.cpp | 370 ++++++++++++++++++++ Sources/utils/contextinfo/contextwidget.h | 83 +++++ Sources/utils/contextinfo/renderwindow.cpp | 225 ++++++++++++ Sources/utils/contextinfo/renderwindow.h | 82 +++++ 13 files changed, 1286 insertions(+), 118 deletions(-) create mode 100644 Sources/utils/DebugMetricsMonitor.cpp create mode 100644 Sources/utils/DebugMetricsMonitor.h create mode 100644 Sources/utils/contextinfo/contextwidget.cpp create mode 100644 Sources/utils/contextinfo/contextwidget.h create mode 100644 Sources/utils/contextinfo/renderwindow.cpp create mode 100644 Sources/utils/contextinfo/renderwindow.h diff --git a/Sources/Sources.pro b/Sources/Sources.pro index fdf3447..fed96d4 100644 --- a/Sources/Sources.pro +++ b/Sources/Sources.pro @@ -1,3 +1,5 @@ +TARGET = AwesomeBump + TEMPLATE = app CONFIG += c++11 QT += opengl gui widgets @@ -24,26 +26,20 @@ PEG_SOURCES += properties/Filter3DDOF.pef \ properties/ImageProperties.pef \ properties/Filters3D.pef - -release_gl330 { - DEFINES += USE_OPENGL_330 - TARGET = AwesomeBumpGL330 -} else { - TARGET = AwesomeBump -} +gl330: DEFINES += USE_OPENGL_330 debug: DBG = -dgb GL = -gl4 -release_gl330: GL = -gl3 +gl330: GL = -gl3 win32: LIBS += Opengl32.lib SPEC=$$[QMAKE_SPEC]$$DBG$$GL DESTDIR = $$TOP_DIR/workdir/$$SPEC/bin OBJECTS_DIR = $$TOP_DIR/workdir/$$SPEC/obj -MOC_DIR = $$TOP_DIR/workdir/$$SPEC/moc -UI_DIR = $$TOP_DIR/workdir/$$SPEC/obj -RCC_DIR = $$TOP_DIR/workdir/$$SPEC/obj +MOC_DIR = $$TOP_DIR/workdir/$$SPEC/gen +UI_DIR = $$TOP_DIR/workdir/$$SPEC/gen +RCC_DIR = $$TOP_DIR/workdir/$$SPEC/gen write_file("$$TOP_DIR/workdir/current", SPEC) @@ -57,7 +53,7 @@ write_file("$$TOP_DIR/workdir/current", SPEC) DEFINES += RESOURCE_BASE=\\\"./\\\" VPATH += ../shared -INCLUDEPATH += ../shared include utils utils/QtnProperty +INCLUDEPATH += ../shared include utils utils/QtnProperty utils/contextinfo HEADERS = glwidget.h \ mainwindow.h \ @@ -67,11 +63,8 @@ HEADERS = glwidget.h \ camera.h \ dialogheightcalculator.h \ qopenglerrorcheck.h \ - utils/Mesh.hpp \ - utils/tinyobj/tiny_obj_loader.h \ formsettingsfield.h \ formsettingscontainer.h \ - utils/qglbuffers.h \ dialoglogger.h \ glwidgetbase.h \ formmaterialindicesmanager.h \ @@ -80,13 +73,19 @@ HEADERS = glwidget.h \ formimagebase.h \ dockwidget3dsettings.h \ gpuinfo.h \ - properties/Dialog3DGeneralSettings.h \ - utils/glslshaderparser.h \ - utils/glslparsedshadercontainer.h \ properties/propertyconstructor.h \ properties/propertydelegateabfloatslider.h \ properties/PropertyABColor.h \ - properties/PropertyDelegateABColor.h + properties/PropertyDelegateABColor.h \ + properties/Dialog3DGeneralSettings.h \ + utils/DebugMetricsMonitor.h \ + utils/Mesh.hpp \ + utils/qglbuffers.h \ + utils/tinyobj/tiny_obj_loader.h \ + utils/glslshaderparser.h \ + utils/glslparsedshadercontainer.h \ + utils/contextinfo/contextwidget.h \ + utils/contextinfo/renderwindow.h SOURCES = glwidget.cpp \ main.cpp \ @@ -110,15 +109,27 @@ SOURCES = glwidget.cpp \ dockwidget3dsettings.cpp \ gpuinfo.cpp \ properties/Dialog3DGeneralSettings.cpp \ + utils/DebugMetricsMonitor.cpp \ utils/glslshaderparser.cpp \ utils/glslparsedshadercontainer.cpp \ properties/propertydelegateabfloatslider.cpp \ properties/PropertyABColor.cpp \ - properties/PropertyDelegateABColor.cpp + properties/PropertyDelegateABColor.cpp \ + utils/contextinfo/contextwidget.cpp \ + utils/contextinfo/renderwindow.cpp RESOURCES += content.qrc +exists("runtime.qrc") { + # build runtime archive + runtimeTarget.target = runtime.rcc + runtimeTarget.depends = $$PWD/runtime.qrc + runtimeTarget.commands = $$[QT_INSTALL_PREFIX]/bin/rcc -binary $$PWD/runtime.qrc -o $$OUT_PWD/runtime.rcc + QMAKE_EXTRA_TARGETS += runtimeTarget + PRE_TARGETDEPS += runtime.rcc +} + RC_FILE = resources/icon.rc FORMS += \ @@ -153,7 +164,14 @@ config.path = $$DESTDIR config.files += $$TOP_DIR/Bin/Configs $$TOP_DIR/Bin/Core INSTALLS += config +exists("utils/qtcopydialog/qtcopydialog.pri") { + message("*** Adding 'copydialog' module.") + DEFINES += HAVE_RTCOPY + include("utils/qtcopydialog/qtcopydialog.pri") +} + exists("utils/QtnProperty/QtnProperty.pri") { + message("*** Adding 'qtnproperty' module.") DEFINES += HAVE_QTNPROP include("utils/QtnProperty/QtnProperty.pri") } else { @@ -161,12 +179,14 @@ exists("utils/QtnProperty/QtnProperty.pri") { } exists("utils/quazip/quazip.pri") { + message("*** Adding 'quazip' module.") DEFINES += HAVE_QUAZIP CONFIG += quazip_include_zip quazip_include_unzip include("utils/quazip/quazip.pri") } exists("utils/fervor/Fervor.pri") { + message("*** Adding 'fervor' module.") DEFINES += HAVE_FERVOR FV_APP_VERSION = $$VERSION_FULL include("utils/fervor/Fervor.pri") diff --git a/Sources/allaboutdialog.cpp b/Sources/allaboutdialog.cpp index cc98eac..0e58914 100644 --- a/Sources/allaboutdialog.cpp +++ b/Sources/allaboutdialog.cpp @@ -2,6 +2,7 @@ #include #include #include +#include "contextwidget.h" #include "allaboutdialog.h" #include "ui_allaboutdialog.h" #include "CommonObjects.h" @@ -11,7 +12,7 @@ AllAboutDialog::AllAboutDialog(QWidget *parent, QGLWidget *surface) : ui(new Ui::allAboutDialog) { ui->setupUi(this); - ui->groupBoxInfo->hide(); + ui->groupBoxInfo->hide(); ui->version->setText(AWESOME_BUMP_VERSION); diff --git a/Sources/content.qrc b/Sources/content.qrc index 7e77427..e0352aa 100644 --- a/Sources/content.qrc +++ b/Sources/content.qrc @@ -10,6 +10,7 @@ resources/logo/logo_O.png resources/logo/logo_M.png resources/logo/logo_R.png + resources/logo/splash.png resources/cursors/lightCursor.png resources/cursors/centerCamCursor.png resources/cursors/corner2.png diff --git a/Sources/main.cpp b/Sources/main.cpp index 6c396c2..99549d4 100644 --- a/Sources/main.cpp +++ b/Sources/main.cpp @@ -40,13 +40,16 @@ #include #include +#include #include #include + #include "mainwindow.h" -#include "CommonObjects.h" #include "glimageeditor.h" #include "allaboutdialog.h" +#include "CommonObjects.h" + #ifdef USE_OPENGL_330 #define GL_MAJOR 3 #define GL_MINOR 3 @@ -54,26 +57,28 @@ #define GL_MAJOR 4 #define GL_MINOR 1 #endif - + +#define SplashImage ":/resources/logo/splash.png" + // find data directory for each platform: -QString _find_data_dir(const QString& path) +QString _find_data_dir(const QString& resource) { - if (path.startsWith(":")) - return path; // resource + if (resource.startsWith(":")) + return resource; // resource QString fpath = QApplication::applicationDirPath(); #if defined(Q_OS_MAC) - fpath += "/../../../"+path; + fpath += "/../../../"+resource; #elif defined(Q_OS_WIN32) - fpath = path; + fpath = resource; #else - fpath = path; + fpath = resource; #endif return fpath; } -// Redirect qDebug() to file log.txt file. +// Redirect qDebug() to file log file. void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { Q_UNUSED(context); @@ -112,6 +117,56 @@ void customMessageHandler(QtMsgType type, const QMessageLogContext &context, con textStream << txt << endl; } +class SplashScreen : public QSplashScreen +{ + Q_OBJECT +public: + explicit SplashScreen(QApplication *app, QWidget *parent = 0) : QSplashScreen(parent), app(app) + { + setCursor(Qt::BusyCursor); + } + int m_progress; + QApplication *app; + +public slots: + void setProgress(int value) + { + m_progress = value; + if (m_progress > 100) + m_progress = 100; + if (m_progress < 0) + m_progress = 0; + update(); + qApp->processEvents(); + } + void setMessage(const QString &msg) + { + QSplashScreen:: showMessage(msg, Qt::AlignTop); + update(); + qApp->processEvents(); + } + +protected: + void drawContents(QPainter *painter) + { + QSplashScreen::drawContents(painter); + + // Set style for progressbar... + QStyleOptionProgressBarV2 pbstyle; + pbstyle.initFrom(this); + pbstyle.state = QStyle::State_Enabled; + pbstyle.textVisible = false; + pbstyle.minimum = 0; + pbstyle.maximum = 100; + pbstyle.progress = m_progress; + pbstyle.invertedAppearance = false; + pbstyle.rect = QRect(0, height()-19, width(), 19); // Where is it. + + // Draw it... + style()->drawControl(QStyle::CE_ProgressBar, &pbstyle, painter, this); + } +}; + bool checkOpenGL(){ QGLWidget *glWidget = new QGLWidget; @@ -125,7 +180,7 @@ bool checkOpenGL(){ glMinorVersion = glContext->format().minorVersion(); qDebug() << "Running the " + QString(AWESOME_BUMP_VERSION); - qDebug() << "Checking OpenGL version..."; + qDebug() << "Checking OpenGL widget:"; qDebug() << "Widget OpenGL:" << QString("%1.%2").arg(glMajorVersion).arg(glMinorVersion); qDebug() << "Context valid:" << glContext->isValid() ; qDebug() << "OpenGL information:" ; @@ -138,21 +193,19 @@ bool checkOpenGL(){ delete glWidget; - qDebug() << QString("Version: %1.%2").arg(glMajorVersion).arg(glMinorVersion); - // check openGL version if( glMajorVersion < GL_MAJOR || (glMajorVersion == GL_MAJOR && glMinorVersion < GL_MINOR)) { - - qDebug() << QString("Error: This version of AwesomeBump does not support openGL versions lower than %1.%2 :(").arg(GL_MAJOR).arg(GL_MINOR) ; - return false; + qWarning() << QString("Error: This version of AwesomeBump does not support openGL versions lower than %1.%2 :(").arg(GL_MAJOR).arg(GL_MINOR) ; + return false; } return true; - } + // register delegates -void regABSliderDelegates(); -void regABColorDelegates(); +extern void regABSliderDelegates(); +extern void regABColorDelegates(); + int main(int argc, char *argv[]) { QApplication app(argc, argv); @@ -160,29 +213,47 @@ int main(int argc, char *argv[]) regABSliderDelegates(); regABColorDelegates(); + //qInstallMessageHandler(customMessageHandler); + + qDebug() << "Starting application:"; qDebug() << "Application dir:" << QApplication::applicationDirPath(); - qDebug() << "Data dir:" << _find_data_dir(""); + qDebug() << "Data dir:" << _find_data_dir(RESOURCE_BASE); + + SplashScreen sp(&app); + QPixmap szpx = QPixmap(SplashImage); + QSize sz = szpx.size() * float(QApplication::desktop()->screenGeometry().width()) / 4.0 / float(szpx.size().width()); // 1/4 of the screen + sp.resize(sz); + sp.setPixmap(szpx.scaled(sz)); + sp.setMessage(VERSION_STRING "|Starting ..."); + sp.show(); app.processEvents(); + + // Check for resource directory: + QString resDir = _find_data_dir(RESOURCE_BASE); + if (!QFileInfo(resDir+"Configs").isDir() || !QFileInfo(resDir+"Core").isDir()) { +#ifdef Q_OS_MAC + return QMessageBox::critical(0, "Missing runtime files", QString("Missing runtime files\n\nCannot find runtime assets required to run the application (resource path: %1).").arg(resDir)); +#else + return QMessageBox::critical(0, "Missing runtime files", QString("Cannot find runtime assets required to run the application (resource path: %1).").arg(resDir)); +#endif + } // Chossing proper GUI style from config.ini file. QSettings settings("config.ini", QSettings::IniFormat); - // Dude, this default style is really amazing... - // Seriously? - // No... - QString guiStyle = settings.value("gui_style","DefaultAwesomeStyle").toString(); - app.setStyle(QStyleFactory::create( guiStyle )); + QString guiStyle = settings.value("gui_style").toString(); + if (!guiStyle.isEmpty()) + app.setStyle(QStyleFactory::create( guiStyle )); // Customize some elements: app.setStyleSheet("QGroupBox { font-weight: bold; } "); QFont font; font.setFamily(font.defaultFamily()); - font.setPixelSize(10); + font.setPixelSize(settings.value("gui_font_size",10).toInt()); app.setFont(font); // removing old log file QFile::remove(AB_LOG); - QGLFormat glFormat(QGL::SampleBuffers); #if defined(Q_OS_LINUX) || defined(Q_OS_MAC) @@ -192,7 +263,7 @@ int main(int argc, char *argv[]) * The full solution is to replace all depreciated OpenGL functions with their current implements. */ # if defined(Q_OS_MAC) - glFormat.setProfile( QGLFormat::CoreProfile ); + glFormat.setProfile( QGLFormat::CoreProfile ); # endif glFormat.setVersion( GL_MAJOR, GL_MINOR ); #endif @@ -205,9 +276,6 @@ int main(int argc, char *argv[]) format.setProfile(QSurfaceFormat::CoreProfile); QSurfaceFormat::setDefaultFormat(format); - //qInstallMessageHandler(customMessageHandler); - qDebug() << "Starting application:"; - if(!checkOpenGL()){ AllAboutDialog msgBox; @@ -224,6 +292,9 @@ int main(int argc, char *argv[]) }else{ MainWindow window; + QObject::connect(&window,SIGNAL(initProgress(int)),&sp,SLOT(setProgress(int))); + QObject::connect(&window,SIGNAL(initMessage(const QString&)),&sp,SLOT(setMessage(const QString&))); + window.initializeApp(); window.setWindowTitle(AWESOME_BUMP_VERSION); window.resize(window.sizeHint()); int desktopArea = QApplication::desktop()->width() * @@ -233,11 +304,10 @@ int main(int argc, char *argv[]) window.show(); else window.showMaximized(); - + sp.finish(&window); + return app.exec(); - } - - - } + +#include "main.moc" \ No newline at end of file diff --git a/Sources/mainwindow.cpp b/Sources/mainwindow.cpp index 02f6dac..2855418 100644 --- a/Sources/mainwindow.cpp +++ b/Sources/mainwindow.cpp @@ -1,8 +1,23 @@ #include "mainwindow.h" #include "ui_mainwindow.h" + +#include "glwidget.h" +#include "glimageeditor.h" +#include "formimageprop.h" +#include "formsettingscontainer.h" +#include "formmaterialindicesmanager.h" +#include "dialoglogger.h" +#include "dialogshortcuts.h" +#include "dockwidget3dsettings.h" + +#include "gpuinfo.h" +#include +#include +#include "properties/Dialog3DGeneralSettings.h" + #include -extern QString _find_data_dir(const QString& path); +extern QString _find_data_dir(const QString& resource); MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -17,21 +32,29 @@ MainWindow::MainWindow(QWidget *parent) : FormImageProp::recentDir = &recentDir; GLWidget::recentMeshDir = &recentMeshDir; abSettings = new QtnPropertySetAwesomeBump(this); + ui->setupUi(this); - statusLabel = new QLabel("Memory left:"); + statusLabel = new QLabel("GPU memory status: n/a"); #ifdef Q_OS_MAC if(!statusLabel->testAttribute(Qt::WA_MacNormalSize)) statusLabel->setAttribute(Qt::WA_MacSmallSize); #endif glImage = new GLImage(this); glWidget = new GLWidget(this,glImage); +} +#define INIT_PROGRESS(p,m) \ + emit initProgress(p); \ + emit initMessage(m); \ + qApp->processEvents(); - - +void MainWindow::initializeApp() +{ connect(glImage,SIGNAL(rendered()),this,SLOT(initializeImages())); + INIT_PROGRESS(10, "Build image properties"); + diffuseImageProp = new FormImageProp(this,glImage); normalImageProp = new FormImageProp(this,glImage); specularImageProp = new FormImageProp(this,glImage); @@ -41,9 +64,10 @@ MainWindow::MainWindow(QWidget *parent) : metallicImageProp = new FormImageProp(this,glImage); grungeImageProp = new FormImageProp(this,glImage); - materialManager = new FormMaterialIndicesManager(this,glImage); + INIT_PROGRESS(20, "Setup image properties"); + // Selecting type of image for each texture diffuseImageProp ->getImageProporties()->imageType = DIFFUSE_TEXTURE; normalImageProp ->getImageProporties()->imageType = NORMAL_TEXTURE; @@ -63,10 +87,9 @@ MainWindow::MainWindow(QWidget *parent) : occlusionImageProp->setupPopertiesGUI(); roughnessImageProp->setupPopertiesGUI(); metallicImageProp->setupPopertiesGUI(); -// materialManager->setupPopertiesGUI(); + // materialManager->setupPopertiesGUI(); grungeImageProp->setupPopertiesGUI(); - // setting pointers to images materialManager->imagesPointers[0] = diffuseImageProp; @@ -78,8 +101,6 @@ MainWindow::MainWindow(QWidget *parent) : materialManager->imagesPointers[6] = metallicImageProp; - - // Setting pointers to 3D view (this pointer are used to bindTextures). glWidget->setPointerToTexture(&diffuseImageProp->getImageProporties() ->fbo,DIFFUSE_TEXTURE); glWidget->setPointerToTexture(&normalImageProp->getImageProporties() ->fbo,NORMAL_TEXTURE); @@ -91,7 +112,6 @@ MainWindow::MainWindow(QWidget *parent) : glWidget->setPointerToTexture(&materialManager->getImageProporties()->fbo,MATERIAL_TEXTURE); - glImage ->targetImageNormal = normalImageProp ->getImageProporties(); glImage ->targetImageHeight = heightImageProp ->getImageProporties(); glImage ->targetImageSpecular = specularImageProp ->getImageProporties(); @@ -102,6 +122,8 @@ MainWindow::MainWindow(QWidget *parent) : glImage ->targetImageMaterial = materialManager ->getImageProporties(); glImage ->targetImageGrunge = grungeImageProp ->getImageProporties(); + INIT_PROGRESS(30, "GUI setup"); + // ------------------------------------------------------ // GUI setup // ------------------------------------------------------ @@ -135,8 +157,7 @@ MainWindow::MainWindow(QWidget *parent) : ui->verticalLayout3DImage->addWidget(glWidget); ui->verticalLayout2DImage->addWidget(glImage); - - + INIT_PROGRESS(40, "Adding widgets."); ui->verticalLayoutDiffuseImage ->addWidget(diffuseImageProp); ui->verticalLayoutNormalImage ->addWidget(normalImageProp); @@ -168,8 +189,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(metallicImageProp ,SIGNAL(imageChanged()),this,SLOT(updateMetallicImage())); connect(grungeImageProp ,SIGNAL(imageChanged()),this,SLOT(updateGrungeImage())); - - + INIT_PROGRESS(50, "Connections and actions."); // grunge connect(grungeImageProp,SIGNAL(toggleGrungeSettings(bool)),diffuseImageProp ,SLOT(toggleGrungeImageSettingsGroup(bool))); @@ -246,7 +266,6 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->pushButtonSaveCurrentSettings ,SIGNAL(released()),this,SLOT(saveSettings())); connect(ui->comboBoxImageOutputFormat ,SIGNAL(activated(int)),this,SLOT(setOutputFormat(int))); - // Other staff ui->progressBar->setValue(0); @@ -263,7 +282,6 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->actionShowGrungeTexture ,SIGNAL(triggered()),this,SLOT(selectGrungeTab())); - connect(ui->checkBoxSaveDiffuse ,SIGNAL(toggled(bool)),this,SLOT(showHideTextureTypes(bool))); connect(ui->checkBoxSaveNormal ,SIGNAL(toggled(bool)),this,SLOT(showHideTextureTypes(bool))); connect(ui->checkBoxSaveSpecular,SIGNAL(toggled(bool)),this,SLOT(showHideTextureTypes(bool))); @@ -273,18 +291,20 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->checkBoxSaveMetallic,SIGNAL(toggled(bool)),this,SLOT(showHideTextureTypes(bool))); - - connect(ui->actionShowSettingsImage ,SIGNAL(triggered()),this,SLOT(selectGeneralSettingsTab())); connect(ui->actionShowUVsTab ,SIGNAL(triggered()),this,SLOT(selectUVsTab())); connect(ui->actionFitToScreen ,SIGNAL(triggered()),this,SLOT(fitImage())); + INIT_PROGRESS(60, "Perspective tool connections."); + // perspective tool connect(ui->pushButtonResetTransform ,SIGNAL(released()),this,SLOT(resetTransform())); connect(ui->comboBoxPerspectiveTransformMethod ,SIGNAL(activated(int)),glImage,SLOT(selectPerspectiveTransformMethod(int))); connect(ui->comboBoxSeamlessMode ,SIGNAL(activated(int)),this,SLOT(selectSeamlessMode(int))); connect(ui->comboBoxSeamlessContrastInputImage ,SIGNAL(activated(int)),this,SLOT(selectContrastInputImage(int))); + INIT_PROGRESS(70, "UV seamless connections."); + // uv seamless algorithms connect(ui->checkBoxUVTranslationsFirst,SIGNAL(clicked()),this,SLOT(updateSliders())); @@ -337,6 +357,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(diffuseImageProp ,SIGNAL(pickImageColor( QtnPropertyABColor*)),glImage,SLOT(pickImageColor( QtnPropertyABColor*))); connect(roughnessImageProp ,SIGNAL(pickImageColor( QtnPropertyABColor*)),glImage,SLOT(pickImageColor( QtnPropertyABColor*))); connect(metallicImageProp ,SIGNAL(pickImageColor( QtnPropertyABColor*)),glImage,SLOT(pickImageColor( QtnPropertyABColor*))); + // 2D imate tool box settings QActionGroup *group = new QActionGroup( this ); group->addAction( ui->actionTranslateUV ); @@ -370,6 +391,7 @@ MainWindow::MainWindow(QWidget *parent) : // Now we can load settings loadSettings(); + INIT_PROGRESS(80, "Loading default (initial) textures."); // Loading default (initial) textures diffuseImageProp ->setImage(QImage(QString(":/resources/logo/logo_D.png"))); @@ -396,6 +418,7 @@ MainWindow::MainWindow(QWidget *parent) : // Setting the active image glImage->setActiveImage(diffuseImageProp->getImageProporties()); + INIT_PROGRESS(90, "Updating main menu items."); aboutAction = new QAction(QIcon(":/resources/icons/cube.png"), tr("&About %1").arg(qApp->applicationName()), this); aboutAction->setToolTip(tr("Show information about AwesomeBump")); @@ -431,11 +454,11 @@ MainWindow::MainWindow(QWidget *parent) : QAction *action = ui->toolBar->toggleViewAction(); ui->menubar->addAction(action); + INIT_PROGRESS(100, tr("Done - UI ready.")); } MainWindow::~MainWindow() { - qDebug() << "calling" << Q_FUNC_INFO; delete dialogLogger; delete dialogShortcuts; delete materialManager; @@ -461,7 +484,6 @@ MainWindow::~MainWindow() void MainWindow::closeEvent(QCloseEvent *event) { QWidget::closeEvent( event ); - qDebug() << "calling" << Q_FUNC_INFO; settingsContainer->close(); glWidget->close(); glImage->close(); @@ -472,12 +494,10 @@ void MainWindow::closeEvent(QCloseEvent *event) { void MainWindow::resizeEvent(QResizeEvent* event){ QWidget::resizeEvent( event ); replotAllImages(); - qDebug() << "calling " << Q_FUNC_INFO; } void MainWindow::showEvent(QShowEvent* event){ QWidget::showEvent( event ); - qDebug() << "calling" << Q_FUNC_INFO; replotAllImages(); } @@ -488,35 +508,18 @@ void MainWindow::replotAllImages(){ // skip grunge map if conversion is enabled if(glImage->getConversionType() != CONVERT_FROM_D_TO_O){ updateImage(GRUNGE_TEXTURE); - //glImage->update(); } updateImage(DIFFUSE_TEXTURE); - //glImage->update(); - updateImage(ROUGHNESS_TEXTURE); - //glImage->update(); - updateImage(METALLIC_TEXTURE); - // glImage->update(); - updateImage(HEIGHT_TEXTURE); - // glImage->update(); - // recalulate normal at the end updateImage(NORMAL_TEXTURE); - // glImage->update(); // then ambient occlusion updateImage(OCCLUSION_TEXTURE); - //glImage->update(); - updateImage(SPECULAR_TEXTURE); - // glImage->update(); - updateImage(MATERIAL_TEXTURE); - // glImage->update(); - - glImage->enableShadowRender(false); @@ -534,13 +537,13 @@ void MainWindow::replotAllImages(){ GLint gpuMemAvail = glGpu.getAvailMem(); if(gpuMemTotal > 0) { - menu_text = QString(" Memory Used:") + QString::number(float(gpuMemTotal - gpuMemAvail) / 1024.0f) + QString("[MB]") - + QString(" Memory Free:") + QString::number(float(gpuMemAvail) / 1024.0f) + QString("[MB]") - + QString(" Total Memory:") + QString::number(float(gpuMemTotal) / 1024.0f) + QString("[MB]"); + menu_text = QString("GPU memory used:") + QString::number(float(gpuMemTotal - gpuMemAvail) / 1024.0f) + QString("[MB]") + + QString(" GPU memory free:") + QString::number(float(gpuMemAvail) / 1024.0f) + QString("[MB]") + + QString(" GPU total memory:") + QString::number(float(gpuMemTotal) / 1024.0f) + QString("[MB]"); } else { - menu_text = QString(" Memory Free:") + QString::number(float(gpuMemAvail) / 1024.0f) + QString("[MB]"); + menu_text = QString("GPU memory free:") + QString::number(float(gpuMemAvail) / 1024.0f) + QString("[MB]"); } statusLabel->setText(menu_text); @@ -1076,8 +1079,7 @@ void MainWindow::updateImage(int tType){ default: // Settings return; } - //glImage->toggleColorPicking(false); - glWidget->repaint(); + glWidget->update(); } void MainWindow::changeWidth (int size=0){ @@ -1413,7 +1415,7 @@ void MainWindow::setUVManipulationMethod(){ QSize MainWindow::sizeHint() const { - return QSize(abSettings->d_win_w,abSettings->d_win_h); + return QSize(abSettings->d_win_w,abSettings->d_win_h); } void MainWindow::loadImageSettings(TextureTypes type){ diff --git a/Sources/mainwindow.h b/Sources/mainwindow.h index f005e21..7c55358 100644 --- a/Sources/mainwindow.h +++ b/Sources/mainwindow.h @@ -7,21 +7,21 @@ #include #include #include -#include "glwidget.h" -#include "glimageeditor.h" -#include "formimageprop.h" -#include "formsettingscontainer.h" -#include "formmaterialindicesmanager.h" #include "CommonObjects.h" -#include "dialoglogger.h" -#include "dialogshortcuts.h" -#include "dockwidget3dsettings.h" -#include "gpuinfo.h" -#include "Property.h" -#include "properties/Dialog3DGeneralSettings.h" -#include +class QAction; +class QLabel; + +class GLWidget; +class GLImage; +class FormImageProp; +class FormMaterialIndicesManager; +class FormSettingsContainer; +class DockWidget3DSettings; +class Dialog3DGeneralSettings; +class DialogLogger; +class DialogShortcuts; namespace Ui { class MainWindow; @@ -36,16 +36,25 @@ class MainWindow : public QMainWindow QSize sizeHint() const; ~MainWindow(); + protected: + void closeEvent(QCloseEvent *event); void resizeEvent(QResizeEvent* event); void showEvent(QShowEvent* event); +signals: + + void initProgress(int perc); + void initMessage(const QString &msg); + public slots: void aboutQt(); void about(); + void initializeApp(); + void initializeGL(); void initializeImages(); diff --git a/Sources/properties/propertyconstructor.h b/Sources/properties/propertyconstructor.h index 1d0353c..e762a59 100644 --- a/Sources/properties/propertyconstructor.h +++ b/Sources/properties/propertyconstructor.h @@ -5,11 +5,14 @@ #include #include +extern QString _find_data_dir(const QString& resource); + + QStringList init_grunge_maps(){ // ------------------------------------------------------- // // Loading grunge maps folders // ------------------------------------------------------- // - qDebug() << "Loading Grunge maps:"; + qDebug() << "Loading grunge maps:"; QDir currentDir(QString(RESOURCE_BASE) + "Core/2D/grunge"); currentDir.setFilter(QDir::Files); QStringList entries = currentDir.entryList(); @@ -34,9 +37,12 @@ QString first_grunge_map(){ if(dirname != QString(".") && dirname != QString("..")){ grungeMaps << dirname; } - }// end of for - qDebug() << "First grunge map:" << grungeMaps[0]; - return grungeMaps[0]; + } // end of for + if (grungeMaps.size()) { + qDebug() << "First grunge map:" << grungeMaps[0]; + return grungeMaps[0]; + } else + return ""; // TODO: Maybe some qrc placeholder ? } diff --git a/Sources/utils/DebugMetricsMonitor.cpp b/Sources/utils/DebugMetricsMonitor.cpp new file mode 100644 index 0000000..5e1ecab --- /dev/null +++ b/Sources/utils/DebugMetricsMonitor.cpp @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "DebugMetricsMonitor.h" + +#if defined(Q_OS_ANDROID) +#include "android/AndroidActivity.h" +#elif defined(Q_OS_MACX) +#include +#elif defined(Q_OS_UNIX) +#include +#endif + +DebugMetricsMonitor::DebugMetricsMonitor(QObject* parent) : QObject(parent) { + mFpsRefreshTime.start(); + mMemoryUsageRefreshTime.start(); + mFpsCounterTimer.start(); + mInstantFpsCounterTimer.start(); +} + +void DebugMetricsMonitor::update() { + // Engine::UPDATE_FREQUENCY should be in line with rendering frame rate + + mFpsCounterCount++; + if (mFpsCounterTimer.elapsed() > mFpsAverageWindowSizeMs) { + int intervalMillis = mFpsCounterTimer.restart(); + mFps = mFpsCounterCount * mFpsAverageWindowSizeMs / (float) intervalMillis; + mFpsCounterCount = 0; + } + mInstantFps = 1000.0f / mInstantFpsCounterTimer.restart(); + + if (mFpsRefreshTime.elapsed() >= mFpsRefreshIntervalMs) { + updateFps(); + mFpsRefreshTime.restart(); + } + if (mMemoryUsageRefreshTime.elapsed() >= mMemoryUsageRefreshIntervalMs) { + updateMemoryUsage(); + mMemoryUsageRefreshTime.restart(); + } +} + +void DebugMetricsMonitor::updateFps() { + emit fpsChanged(); + // TODO: Decide if we want to log FPS details here +} + +void DebugMetricsMonitor::updateMemoryUsage() { +#if defined(Q_OS_ANDROID) + mMemoryUsage = AndroidActivity::getMemoryUsed(); +#elif defined(Q_OS_MACX) + struct task_basic_info taskInfo; + mach_msg_type_number_t taskInfoCount = TASK_BASIC_INFO_COUNT; + if (task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t) &taskInfo, &taskInfoCount) + != KERN_SUCCESS) + { + qDebug() << "Kernel error when retrieving basic task info."; + mMemoryUsage = -1; + } else { + // NOTE: On Mac OSX, the resident_size and virtual_size is in bytes, not pages, + // which differs from the GNU Mach kernel. + mMemoryUsage = taskInfo.resident_size; + } +#elif defined(Q_OS_UNIX) // Guaranteed not to be Android or Mac + +#else + QFile procInfoFile("/proc/self/statm"); + procInfoFile.open(QIODevice::ReadOnly | QIODevice::Text); + QString procInfo = procInfoFile.readAll(); + procInfoFile.close(); + // Memory info prints number of resident 4KB memory pages in the second column + // See: http://man7.org/linux/man-pages/man5/proc.5.html + // NOTE: This number is not accurate past the nearest 4KB. + mMemoryUsage = procInfo.split("\\s")[1].toLong() * 4 * 1000; +#endif + + if (mLoggingMetrics) { + qDebug() << "Memory Usage:" << (mMemoryUsage / 1000000.0) << "MB"; + } + emit memoryUsageChanged(); +} + +void DebugMetricsMonitor::setFpsAverageWindowSizeMs(int value) { + mFpsAverageWindowSizeMs = value; + emit fpsAverageWindowSizeMsChanged(); +} + +void DebugMetricsMonitor::setFpsRefreshIntervalMs(int value) { + mFpsRefreshIntervalMs = value; + emit fpsRefreshIntervalMsChanged(); +} + +void DebugMetricsMonitor::setMemoryUsageRefreshIntervalMs(int value) { + mMemoryUsageRefreshIntervalMs = value; + emit memoryUsageRefreshIntervalMsChanged(); +} + +void DebugMetricsMonitor::setLoggingMetrics(bool value) { + mLoggingMetrics = value; + emit loggingMetricsChanged(); +} diff --git a/Sources/utils/DebugMetricsMonitor.h b/Sources/utils/DebugMetricsMonitor.h new file mode 100644 index 0000000..db917f7 --- /dev/null +++ b/Sources/utils/DebugMetricsMonitor.h @@ -0,0 +1,185 @@ +/* + * Copyright (C) 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef DEBUGMETRICSMONITOR_H +#define DEBUGMETRICSMONITOR_H + +#include +#include +#include + +/** + * @ingroup Engine + * @brief Tracks and provides mechanisms for reporting various debug metrics. + * + * Current metrics that are supported include: frames rendered per second and application memory + * usage. + * @note In order for DebugMetricsMonitor to report correctly, update() must be called every frame. + */ +class DebugMetricsMonitor : public QObject { + Q_OBJECT + + /** + * @brief Average number of frames rendered per second, averaged over #fpsAverageWindowSizeMs + * milliseconds and updated every #fpsRefreshIntervalMs milliseconds. + */ + Q_PROPERTY(float fps READ getFps NOTIFY fpsChanged) + /** + * @brief Size of window, in milliseconds, over which to average #fps. + */ + Q_PROPERTY(int fpsAverageWindowSizeMs READ getFpsAverageWindowSizeMs + WRITE setFpsAverageWindowSizeMs NOTIFY fpsAverageWindowSizeMsChanged) + /** + * @brief Length of interval, in milliseconds, after which to refresh the #fps metric. + */ + Q_PROPERTY(int fpsRefreshIntervalMs READ getFpsRefreshIntervalMs WRITE setFpsRefreshIntervalMs + NOTIFY fpsRefreshIntervalMsChanged) + /** + * @brief The most immediate, non-averaged measurement of the number of frames rendered per + * second that is updated each frame. + */ + Q_PROPERTY(float instantFps READ getInstantFps) + /** + * @brief Amount of memory, in bytes, used by the application. + */ +#ifdef DOXYGEN + Q_PROPERTY(long int memoryUsage READ getMemoryUsage NOTIFY memoryUsageChanged) +#else + Q_PROPERTY(long memoryUsage READ getMemoryUsage NOTIFY memoryUsageChanged) +#endif + /** + * @brief Length of interval, in milliseconds, after which to refresh the #memoryUsage metric. + */ + Q_PROPERTY(int memoryUsageRefreshIntervalMs READ getMemoryUsageRefreshIntervalMs + WRITE setMemoryUsageRefreshIntervalMs NOTIFY memoryUsageRefreshIntervalMsChanged) + /** + * @brief Whether or not DebugMetricsMonitor logs debug information to @c qDebug. + * @note Currently only the #fps metric is logged. + */ + Q_PROPERTY(bool loggingMetrics READ isLoggingMetrics WRITE setLoggingMetrics + NOTIFY loggingMetricsChanged) + +public: + /** + * @brief Constructs a DebugMetricsMonitor. + * @param parent Parent object + */ + explicit DebugMetricsMonitor(QObject* parent = 0); + + /** + * @brief Returns #fps. + */ + float getFps() const { return mFps; } + /** + * @brief Returns #fpsAverageWindowSizeMs. + */ + int getFpsAverageWindowSizeMs() const { return mFpsAverageWindowSizeMs; } + /** + * @brief Sets #fpsAverageWindowSizeMs. + * @param value Integer to set #fpsAverageWindowSizeMs to + */ + void setFpsAverageWindowSizeMs(int value); + /** + * @brief Returns #fpsRefreshIntervalMs. + */ + int getFpsRefreshIntervalMs() const { return mFpsRefreshIntervalMs; } + /** + * @brief Sets #fpsRefreshIntervalMs. + * @param value Integer to set #fpsRefreshIntervalMs to + */ + void setFpsRefreshIntervalMs(int value); + /** + * @brief Returns #instantFps. + */ + float getInstantFps() const { return mInstantFps; } + /** + * @brief Returns #memoryUsage. + */ + long getMemoryUsage() const { return mMemoryUsage; } + /** + * @brief Returns #memoryUsageRefreshIntervalMs. + */ + int getMemoryUsageRefreshIntervalMs() const { return mMemoryUsageRefreshIntervalMs; } + /** + * @brief Sets #memoryUsageRefreshIntervalMs. + * @param value Integer to set #memoryUsageRefreshIntervalMs to + */ + void setMemoryUsageRefreshIntervalMs(int value); + /** + * @brief Returns #loggingMetrics. + */ + bool isLoggingMetrics() const { return mLoggingMetrics; } + /** + * @brief Sets #loggingMetrics. + * @param value Boolean to set #loggingMetrics to + */ + void setLoggingMetrics(bool value); + +public slots: + /** + * @brief Updates the DebugMetricsMonitor metrics if more than their refresh interval times have + * passed since they were last refreshed. + * @note This function should be called each frame to ensure accurate metrics. + */ + void update(); + +signals: + /** + * @brief Emitted when #fps changes. + */ + void fpsChanged(); + /** + * @brief Emitted when #fpsAverageWindowSizeMs changes. + */ + void fpsAverageWindowSizeMsChanged(); + /** + * @brief Emitted when #fpsRefreshIntervalMs changes. + */ + void fpsRefreshIntervalMsChanged(); + /** + * @brief Emitted when #memoryUsage changes. + */ + void memoryUsageChanged(); + /** + * @brief Emitted when #memoryUsageRefreshIntervalMs changes. + */ + void memoryUsageRefreshIntervalMsChanged(); + /** + * @brief Emitted when #loggingMetrics changes. + */ + void loggingMetricsChanged(); + +private: + void updateFps(); + void updateMemoryUsage(); + + float mFps = 0.0f; + int mFpsAverageWindowSizeMs = 1000; + int mFpsRefreshIntervalMs = 100; + float mInstantFps = 0.0f; + QTime mFpsRefreshTime; + int mFpsCounterCount = 0; + QTime mFpsCounterTimer; + QTime mInstantFpsCounterTimer; + + long mMemoryUsage = 0; + int mMemoryUsageRefreshIntervalMs = 1000; + QTime mMemoryUsageRefreshTime; + + bool mLoggingMetrics = true; +}; + +#endif // DEBUGMETRICSMONITOR_H diff --git a/Sources/utils/contextinfo/contextwidget.cpp b/Sources/utils/contextinfo/contextwidget.cpp new file mode 100644 index 0000000..3532f35 --- /dev/null +++ b/Sources/utils/contextinfo/contextwidget.cpp @@ -0,0 +1,370 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "contextwidget.h" +#include "renderwindow.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct Version { + const char *str; + int major; + int minor; +}; + +static struct Version versions[] = { + { "1.0", 1, 0 }, + { "1.1", 1, 1 }, + { "1.2", 1, 2 }, + { "1.3", 1, 3 }, + { "1.4", 1, 4 }, + { "1.5", 1, 5 }, + { "2.0", 2, 0 }, + { "2.1", 2, 1 }, + { "3.0", 3, 0 }, + { "3.1", 3, 1 }, + { "3.2", 3, 2 }, + { "3.3", 3, 3 }, + { "4.0", 4, 0 }, + { "4.1", 4, 1 }, + { "4.2", 4, 2 }, + { "4.3", 4, 3 }, + { "4.4", 4, 4 }, + { "4.5", 4, 5 } +}; + +struct Profile { + const char *str; + QSurfaceFormat::OpenGLContextProfile profile; +}; + +static struct Profile profiles[] = { + { "none", QSurfaceFormat::NoProfile }, + { "core", QSurfaceFormat::CoreProfile }, + { "compatibility", QSurfaceFormat::CompatibilityProfile } +}; + +struct Option { + const char *str; + QSurfaceFormat::FormatOption option; +}; + +static struct Option options[] = { + { "deprecated functions (not forward compatible)", QSurfaceFormat::DeprecatedFunctions }, + { "debug context", QSurfaceFormat::DebugContext }, + { "stereo buffers", QSurfaceFormat::StereoBuffers }, + // This is not a QSurfaceFormat option but is helpful to determine if the driver + // allows compiling old-style shaders with core profile. + { "force version 110 shaders", QSurfaceFormat::FormatOption(0) } +}; + +struct Renderable { + const char *str; + QSurfaceFormat::RenderableType renderable; +}; + +static struct Renderable renderables[] = { + { "default", QSurfaceFormat::DefaultRenderableType }, + { "OpenGL", QSurfaceFormat::OpenGL }, + { "OpenGL ES", QSurfaceFormat::OpenGLES } +}; + +void ContextWidget::addVersions(QLayout *layout) +{ + QHBoxLayout *hbox = new QHBoxLayout; + hbox->setSpacing(20); + QLabel *label = new QLabel(tr("Context &version: ")); + hbox->addWidget(label); + m_version = new QComboBox; + m_version->setMinimumWidth(60); + label->setBuddy(m_version); + hbox->addWidget(m_version); + for (size_t i = 0; i < sizeof(versions) / sizeof(Version); ++i) { + m_version->addItem(QString::fromLatin1(versions[i].str)); + if (versions[i].major == 2 && versions[i].minor == 0) + m_version->setCurrentIndex(m_version->count() - 1); + } + + QPushButton *btn = new QPushButton(tr("Create context")); + connect(btn, &QPushButton::clicked, this, &ContextWidget::start); + btn->setMinimumSize(120, 40); + hbox->addWidget(btn); + + layout->addItem(hbox); +} + +void ContextWidget::addProfiles(QLayout *layout) +{ + QGroupBox *groupBox = new QGroupBox(tr("Profile")); + QVBoxLayout *vbox = new QVBoxLayout; + for (size_t i = 0; i < sizeof(profiles) / sizeof(Profile); ++i) + vbox->addWidget(new QRadioButton(QString::fromLatin1(profiles[i].str))); + static_cast(vbox->itemAt(0)->widget())->setChecked(true); + groupBox->setLayout(vbox); + layout->addWidget(groupBox); + m_profiles = vbox; +} + +void ContextWidget::addOptions(QLayout *layout) +{ + QGroupBox *groupBox = new QGroupBox(tr("Options")); + QVBoxLayout *vbox = new QVBoxLayout; + for (size_t i = 0; i < sizeof(options) / sizeof(Option); ++i) + vbox->addWidget(new QCheckBox(QString::fromLatin1(options[i].str))); + groupBox->setLayout(vbox); + layout->addWidget(groupBox); + m_options = vbox; +} + +void ContextWidget::addRenderableTypes(QLayout *layout) +{ + QGroupBox *groupBox = new QGroupBox(tr("Renderable type")); + QVBoxLayout *vbox = new QVBoxLayout; + for (size_t i = 0; i < sizeof(renderables) / sizeof(Renderable); ++i) + vbox->addWidget(new QRadioButton(QString::fromLatin1(renderables[i].str))); + static_cast(vbox->itemAt(0)->widget())->setChecked(true); + groupBox->setLayout(vbox); + layout->addWidget(groupBox); + m_renderables = vbox; +} + +void ContextWidget::addRenderWindow() +{ + m_renderWindowLayout->addWidget(m_renderWindowContainer); +} + +static QWidget *widgetWithLayout(QLayout *layout) +{ + QWidget *w = new QWidget; + w->setLayout(layout); + return w; +} + +ContextWidget::ContextWidget(QWidget *parent) + : QWidget(parent) +{ + QVBoxLayout *layout = new QVBoxLayout; + QSplitter *vsplit = new QSplitter(Qt::Vertical); + layout->addWidget(vsplit); + + QSplitter *hsplit = new QSplitter; + + QVBoxLayout *settingsLayout = new QVBoxLayout; + addVersions(settingsLayout); + addProfiles(settingsLayout); + addOptions(settingsLayout); + addRenderableTypes(settingsLayout); + hsplit->addWidget(widgetWithLayout(settingsLayout)); + + QVBoxLayout *outputLayout = new QVBoxLayout; + m_output = new QTextEdit; + m_output->setReadOnly(true); + outputLayout->addWidget(m_output); + m_extensions = new QTextEdit; + m_extensions->setReadOnly(true); + outputLayout->addWidget(m_extensions); + hsplit->addWidget(widgetWithLayout(outputLayout)); + + hsplit->setStretchFactor(0, 4); + hsplit->setStretchFactor(1, 6); + vsplit->addWidget(hsplit); + + m_renderWindowLayout = new QVBoxLayout; + vsplit->addWidget(widgetWithLayout(m_renderWindowLayout)); + vsplit->setStretchFactor(1, 5); + + m_renderWindowContainer = new QWidget; + addRenderWindow(); + + setLayout(layout); +} + +void ContextWidget::start() +{ + QSurfaceFormat fmt; + + int idx = m_version->currentIndex(); + if (idx < 0) + return; + fmt.setVersion(versions[idx].major, versions[idx].minor); + + for (size_t i = 0; i < sizeof(profiles) / sizeof(Profile); ++i) + if (static_cast(m_profiles->itemAt(int(i))->widget())->isChecked()) { + fmt.setProfile(profiles[i].profile); + break; + } + + bool forceGLSL110 = false; + for (size_t i = 0; i < sizeof(options) / sizeof(Option); ++i) + if (static_cast(m_options->itemAt(int(i))->widget())->isChecked()) { + if (options[i].option) + fmt.setOption(options[i].option); + else if (i == 3) + forceGLSL110 = true; + } + + for (size_t i = 0; i < sizeof(renderables) / sizeof(Renderable); ++i) + if (static_cast(m_renderables->itemAt(int(i))->widget())->isChecked()) { + fmt.setRenderableType(renderables[i].renderable); + break; + } + + // The example rendering will need a depth buffer. + fmt.setDepthBufferSize(16); + + m_output->clear(); + m_extensions->clear(); + qDebug() << "Requesting surface format" << fmt; + + m_renderWindowLayout->removeWidget(m_renderWindowContainer); + delete m_renderWindowContainer; + + RenderWindow *renderWindow = new RenderWindow(fmt); + if (!renderWindow->context()) { + m_output->append(tr("Failed to create context")); + delete renderWindow; + m_renderWindowContainer = new QWidget; + addRenderWindow(); + return; + } + m_surface = renderWindow; + + renderWindow->setForceGLSL110(forceGLSL110); + connect(renderWindow, &RenderWindow::ready, this, &ContextWidget::renderWindowReady); + connect(renderWindow, &RenderWindow::error, this, &ContextWidget::renderWindowError); + + m_renderWindowContainer = QWidget::createWindowContainer(renderWindow); + addRenderWindow(); +} + +void ContextWidget::printFormat(const QSurfaceFormat &format) +{ + m_output->append(tr("OpenGL version: %1.%2").arg(format.majorVersion()).arg(format.minorVersion())); + + for (size_t i = 0; i < sizeof(profiles) / sizeof(Profile); ++i) + if (profiles[i].profile == format.profile()) { + m_output->append(tr("Profile: %1").arg(QString::fromLatin1(profiles[i].str))); + break; + } + + QString opts; + for (size_t i = 0; i < sizeof(options) / sizeof(Option); ++i) + if (format.testOption(options[i].option)) + opts += QString::fromLatin1(options[i].str) + QLatin1Char(' '); + m_output->append(tr("Options: %1").arg(opts)); + + for (size_t i = 0; i < sizeof(renderables) / sizeof(Renderable); ++i) + if (renderables[i].renderable == format.renderableType()) { + m_output->append(tr("Renderable type: %1").arg(QString::fromLatin1(renderables[i].str))); + break; + } + + m_output->append(tr("Depth buffer size: %1").arg(QString::number(format.depthBufferSize()))); + m_output->append(tr("Stencil buffer size: %1").arg(QString::number(format.stencilBufferSize()))); + m_output->append(tr("Samples: %1").arg(QString::number(format.samples()))); + m_output->append(tr("Red buffer size: %1").arg(QString::number(format.redBufferSize()))); + m_output->append(tr("Green buffer size: %1").arg(QString::number(format.greenBufferSize()))); + m_output->append(tr("Blue buffer size: %1").arg(QString::number(format.blueBufferSize()))); + m_output->append(tr("Alpha buffer size: %1").arg(QString::number(format.alphaBufferSize()))); + m_output->append(tr("Swap interval: %1").arg(QString::number(format.swapInterval()))); +} + +void ContextWidget::renderWindowReady() +{ + QOpenGLContext *context = QOpenGLContext::currentContext(); + Q_ASSERT(context); + + QString vendor, renderer, version, glslVersion; + const GLubyte *p; + QOpenGLFunctions *f = context->functions(); + if ((p = f->glGetString(GL_VENDOR))) + vendor = QString::fromLatin1(reinterpret_cast(p)); + if ((p = f->glGetString(GL_RENDERER))) + renderer = QString::fromLatin1(reinterpret_cast(p)); + if ((p = f->glGetString(GL_VERSION))) + version = QString::fromLatin1(reinterpret_cast(p)); + if ((p = f->glGetString(GL_SHADING_LANGUAGE_VERSION))) + glslVersion = QString::fromLatin1(reinterpret_cast(p)); + + m_output->append(tr("*** Context information ***")); + m_output->append(tr("Vendor: %1").arg(vendor)); + m_output->append(tr("Renderer: %1").arg(renderer)); + m_output->append(tr("OpenGL version: %1").arg(version)); + m_output->append(tr("GLSL version: %1").arg(glslVersion)); + + m_output->append(tr("\n*** QSurfaceFormat from context ***")); + printFormat(context->format()); + + m_output->append(tr("\n*** QSurfaceFormat from window surface ***")); + printFormat(m_surface->format()); + + m_output->append(tr("\n*** Qt build information ***")); + const char *gltype[] = { "Desktop", "GLES 2", "GLES 1" }; + m_output->append(tr("Qt OpenGL configuration: %1") + .arg(QString::fromLatin1(gltype[QOpenGLContext::openGLModuleType()]))); + m_output->append(tr("Qt OpenGL library handle: %1") + .arg(QString::number(qintptr(QOpenGLContext::openGLModuleHandle()), 16))); + + QList extensionList = context->extensions().toList(); + std::sort(extensionList.begin(), extensionList.end()); + m_extensions->append(tr("Found %1 extensions:").arg(extensionList.count())); + Q_FOREACH (const QByteArray &ext, extensionList) + m_extensions->append(QString::fromLatin1(ext)); + + m_output->moveCursor(QTextCursor::Start); + m_extensions->moveCursor(QTextCursor::Start); +} + +void ContextWidget::renderWindowError(const QString &msg) +{ + m_output->append(tr("An error has occurred:\n%1").arg(msg)); +} diff --git a/Sources/utils/contextinfo/contextwidget.h b/Sources/utils/contextinfo/contextwidget.h new file mode 100644 index 0000000..cb3fc2a --- /dev/null +++ b/Sources/utils/contextinfo/contextwidget.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CONTEXTWIDGET_H +#define CONTEXTWIDGET_H + +#include + +QT_FORWARD_DECLARE_CLASS(QComboBox) +QT_FORWARD_DECLARE_CLASS(QTextEdit) +QT_FORWARD_DECLARE_CLASS(QVBoxLayout) +QT_FORWARD_DECLARE_CLASS(QSurfaceFormat) +QT_FORWARD_DECLARE_CLASS(QSurface) + +class ContextWidget : public QWidget +{ + Q_OBJECT + +public: + explicit ContextWidget(QWidget *parent = 0); + +private slots: + void start(); + void renderWindowReady(); + void renderWindowError(const QString &msg); + +private: + void addVersions(QLayout *layout); + void addProfiles(QLayout *layout); + void addOptions(QLayout *layout); + void addRenderableTypes(QLayout *layout); + void addRenderWindow(); + void printFormat(const QSurfaceFormat &format); + + QComboBox *m_version; + QLayout *m_profiles; + QLayout *m_options; + QLayout *m_renderables; + QTextEdit *m_output; + QTextEdit *m_extensions; + QVBoxLayout *m_renderWindowLayout; + QWidget *m_renderWindowContainer; + QSurface *m_surface; +}; + +#endif // WIDGET_H diff --git a/Sources/utils/contextinfo/renderwindow.cpp b/Sources/utils/contextinfo/renderwindow.cpp new file mode 100644 index 0000000..a7c2627 --- /dev/null +++ b/Sources/utils/contextinfo/renderwindow.cpp @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "renderwindow.h" +#include +#include +#include +#include +#include + +RenderWindow::RenderWindow(const QSurfaceFormat &format) + : m_context(0), + m_initialized(false), + m_forceGLSL110(false), + m_angle(0.0f) +{ + setSurfaceType(QWindow::OpenGLSurface); + setFormat(format); + m_context = new QOpenGLContext(this); + m_context->setFormat(requestedFormat()); + if (!m_context->create()) { + delete m_context; + m_context = 0; + } +} + +void RenderWindow::exposeEvent(QExposeEvent *) +{ + if (isExposed()) + render(); +} + +// ES needs the precision qualifiers. +// On desktop GL QOpenGLShaderProgram inserts dummy defines for highp/mediump/lowp. +static const char *vertexShaderSource110 = + "attribute highp vec4 posAttr;\n" + "attribute lowp vec4 colAttr;\n" + "varying lowp vec4 col;\n" + "uniform highp mat4 matrix;\n" + "void main() {\n" + " col = colAttr;\n" + " gl_Position = matrix * posAttr;\n" + "}\n"; + +static const char *fragmentShaderSource110 = + "varying lowp vec4 col;\n" + "void main() {\n" + " gl_FragColor = col;\n" + "}\n"; + +static const char *vertexShaderSource = + "#version 150\n" + "in vec4 posAttr;\n" + "in vec4 colAttr;\n" + "out vec4 col;\n" + "uniform mat4 matrix;\n" + "void main() {\n" + " col = colAttr;\n" + " gl_Position = matrix * posAttr;\n" + "}\n"; + +static const char *fragmentShaderSource = + "#version 150\n" + "in vec4 col;\n" + "out vec4 fragColor;\n" + "void main() {\n" + " fragColor = col;\n" + "}\n"; + +static GLfloat vertices[] = { + 0.0f, 0.707f, + -0.5f, -0.5f, + 0.5f, -0.5f +}; + +static GLfloat colors[] = { + 1.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f +}; + +void RenderWindow::init() +{ + m_program = new QOpenGLShaderProgram(this); + + QSurfaceFormat format = m_context->format(); + bool useNewStyleShader = format.profile() == QSurfaceFormat::CoreProfile; + // Try to handle 3.0 & 3.1 that do not have the core/compatibility profile concept 3.2+ has. + // This may still fail since version 150 (3.2) is specified in the sources but it's worth a try. + if (format.renderableType() == QSurfaceFormat::OpenGL && format.majorVersion() == 3 && format.minorVersion() <= 1) + useNewStyleShader = !format.testOption(QSurfaceFormat::DeprecatedFunctions); + if (m_forceGLSL110) + useNewStyleShader = false; + + const char *vsrc = useNewStyleShader ? vertexShaderSource : vertexShaderSource110; + const char *fsrc = useNewStyleShader ? fragmentShaderSource : fragmentShaderSource110; + qDebug("Using version %s shader", useNewStyleShader ? "150" : "110"); + + if (!m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vsrc)) { + emit error(m_program->log()); + return; + } + if (!m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fsrc)) { + emit error(m_program->log()); + return; + } + if (!m_program->link()) { + emit error(m_program->log()); + return; + } + + m_posAttr = m_program->attributeLocation("posAttr"); + m_colAttr = m_program->attributeLocation("colAttr"); + m_matrixUniform = m_program->uniformLocation("matrix"); + + m_vbo.create(); + m_vbo.bind(); + m_vbo.allocate(vertices, sizeof(vertices) + sizeof(colors)); + m_vbo.write(sizeof(vertices), colors, sizeof(colors)); + m_vbo.release(); + + QOpenGLVertexArrayObject::Binder vaoBinder(&m_vao); + if (m_vao.isCreated()) // have VAO support, use it + setupVertexAttribs(); +} + +void RenderWindow::setupVertexAttribs() +{ + m_vbo.bind(); + m_program->setAttributeBuffer(m_posAttr, GL_FLOAT, 0, 2); + m_program->setAttributeBuffer(m_colAttr, GL_FLOAT, sizeof(vertices), 3); + m_program->enableAttributeArray(m_posAttr); + m_program->enableAttributeArray(m_colAttr); + m_vbo.release(); +} + +void RenderWindow::render() +{ + if (!m_context->makeCurrent(this)) { + emit error(tr("makeCurrent() failed")); + return; + } + + QOpenGLFunctions *f = m_context->functions(); + if (!m_initialized) { + m_initialized = true; + f->glEnable(GL_DEPTH_TEST); + f->glClearColor(0, 0, 0, 1); + init(); + emit ready(); + } + + if (!m_vbo.isCreated()) // init() failed, don't bother with trying to render + return; + + const qreal retinaScale = devicePixelRatio(); + f->glViewport(0, 0, width() * retinaScale, height() * retinaScale); + f->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + m_program->bind(); + QMatrix4x4 matrix; + matrix.perspective(60.0f, 4.0f / 3.0f, 0.1f, 100.0f); + matrix.translate(0.0f, 0.0f, -2.0f); + matrix.rotate(m_angle, 0.0f, 1.0f, 0.0f); + m_program->setUniformValue(m_matrixUniform, matrix); + + if (m_vao.isCreated()) + m_vao.bind(); + else // no VAO support, set the vertex attribute arrays now + setupVertexAttribs(); + + f->glDrawArrays(GL_TRIANGLES, 0, 3); + + m_vao.release(); + m_program->release(); + + // swapInterval is 1 by default which means that swapBuffers() will (hopefully) block + // and wait for vsync. + m_context->swapBuffers(this); + + m_angle += 1.0f; + + // Instead of 0 wait a few more milliseconds before rendering again. This is + // only here to make the UI widgets more responsive on slower machines. We + // can afford it since our rendering is so lightweight. + const int interval = 5; + QTimer::singleShot(interval, this, &RenderWindow::render); +} diff --git a/Sources/utils/contextinfo/renderwindow.h b/Sources/utils/contextinfo/renderwindow.h new file mode 100644 index 0000000..8494b00 --- /dev/null +++ b/Sources/utils/contextinfo/renderwindow.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef RENDERWINDOW_H +#define RENDERWINDOW_H + +#include +#include +#include + +QT_FORWARD_DECLARE_CLASS(QOpenGLContext) +QT_FORWARD_DECLARE_CLASS(QOpenGLShaderProgram) + +class RenderWindow : public QWindow +{ + Q_OBJECT + +public: + RenderWindow(const QSurfaceFormat &format); + QOpenGLContext *context() { return m_context; } + void exposeEvent(QExposeEvent *) Q_DECL_OVERRIDE; + void setForceGLSL110(bool enable) { m_forceGLSL110 = enable; } + +signals: + void ready(); + void error(const QString &msg); + +private slots: + void render(); + +private: + void init(); + void setupVertexAttribs(); + + QOpenGLContext *m_context; + bool m_initialized; + bool m_forceGLSL110; + QOpenGLShaderProgram *m_program; + int m_posAttr, m_colAttr, m_matrixUniform; + QOpenGLVertexArrayObject m_vao; + QOpenGLBuffer m_vbo; + float m_angle; +}; + +#endif // RENDERWINDOW_H