Merge pull request #169 from ajeakins/master

Fix device view not showing anything on macOS.
This commit is contained in:
Miodrag Milanović 2019-05-23 23:53:52 -07:00 committed by GitHub
commit 0d1c7118e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 20 deletions

View File

@ -20,6 +20,8 @@
*/ */
#include "application.h" #include "application.h"
#include "log.h"
#include <QOpenGLContext>
#include <QMessageBox> #include <QMessageBox>
#include <QSurfaceFormat> #include <QSurfaceFormat>
#include <QTextStream> #include <QTextStream>
@ -42,7 +44,22 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
QSurfaceFormat fmt; QSurfaceFormat fmt;
fmt.setSamples(10); fmt.setSamples(10);
fmt.setProfile(QSurfaceFormat::CoreProfile); fmt.setProfile(QSurfaceFormat::CoreProfile);
// macOS is very picky about this version matching
// the version of openGL used in ImGuiRenderer
fmt.setMajorVersion(3);
fmt.setMinorVersion(2);
QSurfaceFormat::setDefaultFormat(fmt); QSurfaceFormat::setDefaultFormat(fmt);
QOpenGLContext glContext;
fmt = glContext.format();
if (fmt.majorVersion() < 3) {
printf("Could not get OpenGL 3.0 context. Aborting.\n");
log_abort();
}
if (fmt.minorVersion() < 2) {
printf("Could not get OpenGL 3.2 context - trying anyway...\n ");
}
#ifdef _WIN32 #ifdef _WIN32
SetConsoleCtrlHandler((PHANDLER_ROUTINE)WinHandler, TRUE); SetConsoleCtrlHandler((PHANDLER_ROUTINE)WinHandler, TRUE);
#endif #endif

View File

@ -59,20 +59,6 @@ FPGAViewWidget::FPGAViewWidget(QWidget *parent)
rendererArgs_->gridChanged = false; rendererArgs_->gridChanged = false;
rendererArgs_->zoomOutbound = true; rendererArgs_->zoomOutbound = true;
auto fmt = format();
fmt.setMajorVersion(3);
fmt.setMinorVersion(2);
setFormat(fmt);
fmt = format();
if (fmt.majorVersion() < 3) {
printf("Could not get OpenGL 3.0 context. Aborting.\n");
log_abort();
}
if (fmt.minorVersion() < 2) {
printf("Could not get OpenGL 3.2 context - trying anyway...\n ");
}
connect(&paintTimer_, SIGNAL(timeout()), this, SLOT(update())); connect(&paintTimer_, SIGNAL(timeout()), this, SLOT(update()));
paintTimer_.start(1000 / 20); // paint GL 20 times per second paintTimer_.start(1000 / 20); // paint GL 20 times per second

View File

@ -172,10 +172,10 @@ class LineShader
LineShader(QObject *parent) : parent_(parent), program_(nullptr) {} LineShader(QObject *parent) : parent_(parent), program_(nullptr) {}
static constexpr const char *vertexShaderSource_ = static constexpr const char *vertexShaderSource_ =
"#version 110\n" "#version 150\n"
"attribute highp vec2 position;\n" "in highp vec2 position;\n"
"attribute highp vec2 normal;\n" "in highp vec2 normal;\n"
"attribute highp float miter;\n" "in highp float miter;\n"
"uniform highp float thickness;\n" "uniform highp float thickness;\n"
"uniform highp mat4 projection;\n" "uniform highp mat4 projection;\n"
"void main() {\n" "void main() {\n"
@ -183,10 +183,11 @@ class LineShader
" gl_Position = projection * vec4(p, 0.0, 1.0);\n" " gl_Position = projection * vec4(p, 0.0, 1.0);\n"
"}\n"; "}\n";
static constexpr const char *fragmentShaderSource_ = "#version 110\n" static constexpr const char *fragmentShaderSource_ = "#version 150\n"
"uniform lowp vec4 color;\n" "uniform lowp vec4 color;\n"
"out vec4 Out_Color;\n"
"void main() {\n" "void main() {\n"
" gl_FragColor = color;\n" " Out_Color = color;\n"
"}\n"; "}\n";
// Must be called on initialization. // Must be called on initialization.