From 59ba1fc299eef6f301f65aa2523792f4d78c6b45 Mon Sep 17 00:00:00 2001 From: rooswouter Date: Mon, 9 Sep 2019 08:26:23 +0200 Subject: [PATCH 1/4] Removed definition of __gl_h_ to prevent the Gl.h include not defining standard Gl defines such as GLfloat when compiling on Windows systems (Visual Studio 2013 tested) --- include/osgQOpenGL/osgQOpenGLWidget | 2 +- include/osgQOpenGL/osgQOpenGLWindow | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/osgQOpenGL/osgQOpenGLWidget b/include/osgQOpenGL/osgQOpenGLWidget index 0973c99..9245d04 100644 --- a/include/osgQOpenGL/osgQOpenGLWidget +++ b/include/osgQOpenGL/osgQOpenGLWidget @@ -12,7 +12,7 @@ #include #ifdef WIN32 -#define __gl_h_ +//#define __gl_h_ #include #endif diff --git a/include/osgQOpenGL/osgQOpenGLWindow b/include/osgQOpenGL/osgQOpenGLWindow index e2063db..06da485 100644 --- a/include/osgQOpenGL/osgQOpenGLWindow +++ b/include/osgQOpenGL/osgQOpenGLWindow @@ -12,7 +12,7 @@ #include #ifdef WIN32 -#define __gl_h_ +//#define __gl_h_ #include #endif From 475e78b979f6fe4c10061fe5a788d72946fb2849 Mon Sep 17 00:00:00 2001 From: rooswouter Date: Wed, 11 Sep 2019 08:20:59 +0200 Subject: [PATCH 2/4] Removed setting of state settings specific to OpenGL 3 non fixed pipeline. --- src/osgQOpenGL/OSGRenderer.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/osgQOpenGL/OSGRenderer.cpp b/src/osgQOpenGL/OSGRenderer.cpp index 3047f66..8cdb2e8 100644 --- a/src/osgQOpenGL/OSGRenderer.cpp +++ b/src/osgQOpenGL/OSGRenderer.cpp @@ -206,15 +206,6 @@ void OSGRenderer::setupOSG(int windowWidth, int windowHeight, float windowScale) osgViewer::Viewer::Windows windows; getWindows(windows); - for(osgViewer::Viewer::Windows::iterator itr = windows.begin(); - itr != windows.end(); ++itr) - { - (*itr)->getState()->setUseModelViewAndProjectionUniforms(true); - (*itr)->getState()->setUseVertexAttributeAliasing(true); - (*itr)->getState()->setShaderCompositionEnabled( - false); // TODO: check if we need it ??? - } - _timerId = startTimer(10, Qt::PreciseTimer); _lastFrameStartTime.setStartTick(0); } From 6f22c1f1210a23c7c408fbb77775b1c943239f9f Mon Sep 17 00:00:00 2001 From: rooswouter Date: Wed, 11 Sep 2019 09:30:43 +0200 Subject: [PATCH 3/4] Added check for starting without any arguments to call constructor without arguments --- src/osgQOpenGL/osgQOpenGLWidget.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/osgQOpenGL/osgQOpenGLWidget.cpp b/src/osgQOpenGL/osgQOpenGLWidget.cpp index b1dfd99..edde2c8 100644 --- a/src/osgQOpenGL/osgQOpenGLWidget.cpp +++ b/src/osgQOpenGL/osgQOpenGLWidget.cpp @@ -205,9 +205,12 @@ void osgQOpenGLWidget::createRenderer() { // call this before creating a View... setDefaultDisplaySettings(); - - m_renderer = new OSGRenderer(_arguments, this); - QScreen* screen = windowHandle() + if (!_arguments) { + m_renderer = new OSGRenderer(this); + } else { + m_renderer = new OSGRenderer(_arguments, this); + } + QScreen* screen = windowHandle() && windowHandle()->screen() ? windowHandle()->screen() : qApp->screens().front(); m_renderer->setupOSG(width(), height(), screen->devicePixelRatio()); From db2f0f305f6faf627348f368269c35a9463882f2 Mon Sep 17 00:00:00 2001 From: rooswouter Date: Fri, 20 Sep 2019 17:40:20 +0200 Subject: [PATCH 4/4] Add setting of default fbo id to fix problem with render to texture in the QOpenGLWidget --- include/osgQOpenGL/osgQOpenGLWidget | 1 + include/osgQOpenGL/osgQOpenGLWindow | 2 +- src/osgQOpenGL/osgQOpenGLWidget.cpp | 6 +++++- src/osgQOpenGL/osgQOpenGLWindow.cpp | 4 ++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/osgQOpenGL/osgQOpenGLWidget b/include/osgQOpenGL/osgQOpenGLWidget index 9245d04..a5a7ae5 100644 --- a/include/osgQOpenGL/osgQOpenGLWidget +++ b/include/osgQOpenGL/osgQOpenGLWidget @@ -39,6 +39,7 @@ protected: bool _osgWantsToRenderFrame{true}; OpenThreads::ReadWriteMutex _osgMutex; osg::ArgumentParser* _arguments {nullptr}; + bool _isFirstFrame {true}; friend class OSGRenderer; diff --git a/include/osgQOpenGL/osgQOpenGLWindow b/include/osgQOpenGL/osgQOpenGLWindow index 06da485..59b1971 100644 --- a/include/osgQOpenGL/osgQOpenGLWindow +++ b/include/osgQOpenGL/osgQOpenGLWindow @@ -37,7 +37,7 @@ protected: OSGRenderer* m_renderer {nullptr}; bool _osgWantsToRenderFrame{true}; OpenThreads::ReadWriteMutex _osgMutex; - + bool _isFirstFrame {true}; friend class OSGRenderer; QWidget* _widget = nullptr; diff --git a/src/osgQOpenGL/osgQOpenGLWidget.cpp b/src/osgQOpenGL/osgQOpenGLWidget.cpp index edde2c8..fe16e87 100644 --- a/src/osgQOpenGL/osgQOpenGLWidget.cpp +++ b/src/osgQOpenGL/osgQOpenGLWidget.cpp @@ -60,7 +60,11 @@ void osgQOpenGLWidget::resizeGL(int w, int h) void osgQOpenGLWidget::paintGL() { OpenThreads::ScopedReadLock locker(_osgMutex); - m_renderer->frame(); + if (_isFirstFrame) { + _isFirstFrame = false; + m_renderer->getCamera()->getGraphicsContext()->setDefaultFboId(defaultFramebufferObject()); + } + m_renderer->frame(); } void osgQOpenGLWidget::keyPressEvent(QKeyEvent* event) diff --git a/src/osgQOpenGL/osgQOpenGLWindow.cpp b/src/osgQOpenGL/osgQOpenGLWindow.cpp index 64fc37d..1445c5f 100644 --- a/src/osgQOpenGL/osgQOpenGLWindow.cpp +++ b/src/osgQOpenGL/osgQOpenGLWindow.cpp @@ -52,6 +52,10 @@ void osgQOpenGLWindow::resizeGL(int w, int h) void osgQOpenGLWindow::paintGL() { OpenThreads::ScopedReadLock locker(_osgMutex); + if (_isFirstFrame) { + _isFirstFrame = false; + m_renderer->getCamera()->getGraphicsContext()->setDefaultFboId(defaultFramebufferObject()); + } m_renderer->frame(); }