summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Rødal <sroedal@trolltech.com>2009-07-01 12:40:51 (GMT)
committerSamuel Rødal <sroedal@trolltech.com>2009-07-01 12:44:25 (GMT)
commit66a281ab76303074cd9cbb6cd22dcc5f3dbe8454 (patch)
tree1f42218c513a327d85ff408297879297c78a23f1
parent7bf505a54379388b292df528114d6e2dd8d9d4d4 (diff)
downloadQt-66a281ab76303074cd9cbb6cd22dcc5f3dbe8454.zip
Qt-66a281ab76303074cd9cbb6cd22dcc5f3dbe8454.tar.gz
Qt-66a281ab76303074cd9cbb6cd22dcc5f3dbe8454.tar.bz2
Made QPainter / OpenGL intermixing in hellogl_es2 work properly again.
Need to call syncState() to let the paint engine set depth clipping state parameters back to their OpenGL defaults. Reviewed-by: Trond
-rw-r--r--examples/opengl/hellogl_es2/glwidget.cpp3
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp5
2 files changed, 8 insertions, 0 deletions
diff --git a/examples/opengl/hellogl_es2/glwidget.cpp b/examples/opengl/hellogl_es2/glwidget.cpp
index 6b08662..bb07b22 100644
--- a/examples/opengl/hellogl_es2/glwidget.cpp
+++ b/examples/opengl/hellogl_es2/glwidget.cpp
@@ -41,6 +41,7 @@
#include "glwidget.h"
#include <QPainter>
+#include <QPaintEngine>
#include <math.h>
#include "bubble.h"
@@ -265,6 +266,8 @@ void GLWidget::paintGL()
QPainter painter;
painter.begin(this);
+ painter.paintEngine()->syncState();
+
glClearColor(0.1f, 0.1f, 0.2f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index edc7c44..f261ca2 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -676,6 +676,11 @@ void QGL2PaintEngineEx::sync()
glDisable(GL_BLEND);
glActiveTexture(GL_TEXTURE0);
+ glDisable(GL_DEPTH_TEST);
+ glDepthFunc(GL_LESS);
+ glDepthMask(true);
+ glClearDepth(1);
+
d->needsSync = true;
}