2017-09-12 14:40:37 +02:00
|
|
|
From 2d5a68b91f9d638aa408285d1608bc5d70060602 Mon Sep 17 00:00:00 2001
|
|
|
|
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
|
|
|
|
Date: Fri, 1 Sep 2017 02:11:37 +0200
|
|
|
|
Subject: [PATCH] Allow compilation on GLES platforms
|
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/plain; charset=UTF-8
|
|
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
|
|
|
|
On GLES 2.0 platforms (more specifically, for Qt5 "opengl es2" builds),
|
|
|
|
QOpenGLFunctions_3_2_Core does not exist. Since Qt 5.7,
|
|
|
|
QOpenGlFramebufferObject has a static wrapper method for framebuffer
|
|
|
|
blitting, which in worst case is a noop.
|
|
|
|
|
|
|
|
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
|
|
|
---
|
2019-03-19 14:50:29 +01:00
|
|
|
GUISupport/Qt/QVTKOpenGLNativeWidget.cxx | 12 ++++++++++++
|
2017-09-12 14:40:37 +02:00
|
|
|
1 file changed, 12 insertions(+)
|
|
|
|
|
2019-03-19 14:50:29 +01:00
|
|
|
diff --git a/GUISupport/Qt/QVTKOpenGLNativeWidget.cxx b/GUISupport/Qt/QVTKOpenGLNativeWidget.cxx
|
2017-09-12 14:40:37 +02:00
|
|
|
index a1676e8..16e255f 100644
|
2019-03-19 14:50:29 +01:00
|
|
|
--- a/GUISupport/Qt/QVTKOpenGLNativeWidget.cxx
|
|
|
|
+++ b/GUISupport/Qt/QVTKOpenGLNativeWidget.cxx
|
|
|
|
@@ -534,10 +534,15 @@ void QVTKOpenGLNativeWidget::paintGL()
|
2017-09-12 14:40:37 +02:00
|
|
|
|
|
|
|
// blit from this->FBO to QOpenGLWidget's FBO.
|
2019-03-19 14:50:29 +01:00
|
|
|
vtkQVTKOpenGLNativeWidgetDebugMacro("paintGL::blit-to-defaultFBO");
|
2017-09-12 14:40:37 +02:00
|
|
|
+#if QT_VERSION < 0x050700
|
|
|
|
QOpenGLFunctions_3_2_Core* f =
|
|
|
|
QOpenGLContext::currentContext()->versionFunctions<QOpenGLFunctions_3_2_Core>();
|
|
|
|
+#else
|
|
|
|
+ QOpenGLFunctions* f = QOpenGLContext::currentContext()->functions();
|
|
|
|
+#endif
|
|
|
|
if (f)
|
|
|
|
{
|
|
|
|
+#if QT_VERSION < 0x050700
|
2019-03-19 14:50:29 +01:00
|
|
|
vtkOpenGLState *ostate = this->RenderWindow->GetState();
|
2017-09-12 14:40:37 +02:00
|
|
|
|
2019-03-19 14:50:29 +01:00
|
|
|
f->glBindFramebuffer(GL_DRAW_FRAMEBUFFER, this->defaultFramebufferObject());
|
|
|
|
@@ -556,6 +561,13 @@ void QVTKOpenGLNativeWidget::paintGL()
|
2017-09-12 14:40:37 +02:00
|
|
|
f->glBlitFramebuffer(0, 0, this->RenderWindow->GetSize()[0], this->RenderWindow->GetSize()[1],
|
|
|
|
0, 0, this->RenderWindow->GetSize()[0], this->RenderWindow->GetSize()[1], GL_COLOR_BUFFER_BIT,
|
|
|
|
GL_NEAREST);
|
|
|
|
+#else
|
|
|
|
+ f->glDisable(GL_SCISSOR_TEST); // Scissor affects glBindFramebuffer.
|
|
|
|
+ QRect rect(0, 0, this->RenderWindow->GetSize()[0], this->RenderWindow->GetSize()[1]);
|
|
|
|
+ QOpenGLFramebufferObject::blitFramebuffer(0 /* binds to default framebuffer */, rect,
|
|
|
|
+ this->FBO, rect, GL_COLOR_BUFFER_BIT, GL_NEAREST, GL_COLOR_ATTACHMENT0,
|
|
|
|
+ GL_COLOR_ATTACHMENT0, QOpenGLFramebufferObject::DontRestoreFramebufferBinding);
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
// now clear alpha otherwise we end up blending the rendering with
|
|
|
|
// background windows in certain cases. It happens on OsX
|
|
|
|
--
|
|
|
|
2.14.1
|
|
|
|
|