summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/gui/doc/images/openglwindow-example.png (renamed from doc/src/images/openglwindow-example.png)bin19920 -> 19920 bytes
-rw-r--r--src/gui/kernel/qopenglcontext.cpp2
-rw-r--r--src/gui/opengl/qopenglpaintdevice.cpp44
3 files changed, 41 insertions, 5 deletions
diff --git a/doc/src/images/openglwindow-example.png b/examples/gui/doc/images/openglwindow-example.png
index 63ba4ed2f4..63ba4ed2f4 100644
--- a/doc/src/images/openglwindow-example.png
+++ b/examples/gui/doc/images/openglwindow-example.png
Binary files differ
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp
index d2de6aa125..f16f29718d 100644
--- a/src/gui/kernel/qopenglcontext.cpp
+++ b/src/gui/kernel/qopenglcontext.cpp
@@ -121,7 +121,7 @@ QMutex QOpenGLContextPrivate::makeCurrentTrackerMutex;
\l{OpenGL documentation}.
For an example of how to use QOpenGLContext see the
- \l{gui/openglwindow}{OpenGL Window} example.
+ \l{OpenGL Window Example}{OpenGL Window} example.
\section1 Thread affinity
diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
index b2ffac69ca..79e692b8cf 100644
--- a/src/gui/opengl/qopenglpaintdevice.cpp
+++ b/src/gui/opengl/qopenglpaintdevice.cpp
@@ -63,11 +63,47 @@ QT_BEGIN_NAMESPACE
\ingroup painting-3D
+ The QOpenGLPaintDevice uses the current QOpenGL context to render
+ QPainter draw commands. It requires OpenGL (ES) 2.0 support or
+ higher.
+
+ \section1 Performance
+
+ The QOpenGLPaintDevice is almost always hardware accelerated and
+ has the potential of being much faster than software
+ rasterization. However, it is more sensitive to state changes, and
+ therefore requires the drawing commands to be carefully ordered to
+ achieve optimal performance.
+
+ \section1 Antialiasing and Quality
+
+ Antialiasing in the OpenGL paint engine is done using
+ multisampling. Most hardware require significantly more memory to
+ do multisampling and the resulting quality is not on par with the
+ quality of the software paint engine. The OpenGL paint engine's
+ strenght lies in its performance, not its visual rendering
+ quality.
+
+ \section1 State Changes
+
When painting to a QOpenGLPaintDevice using QPainter, the state of
- the current OpenGL context will be altered by the paint engine to reflect
- its needs. Applications should not rely upon the OpenGL state being reset
- to its original conditions, particularly the current shader program,
- OpenGL viewport, texture units, and drawing modes.
+ the current OpenGL context will be altered by the paint engine to
+ reflect its needs. Applications should not rely upon the OpenGL
+ state being reset to its original conditions, particularly the
+ current shader program, OpenGL viewport, texture units, and
+ drawing modes.
+
+ \section1 Mixing QPainter and OpenGL
+
+ When intermixing QPainter and OpenGL, it is important to notify
+ QPainter that the OpenGL state may have been cluttered so it can
+ restore its internal state. This is acheived by calling \l
+ QPainter::beginNativePainting() before starting the OpenGL
+ rendering and calling \l QPainter::endNativePainting() after
+ finishing.
+
+ \sa {OpenGL Window Example}
+
*/
class QOpenGLPaintDevicePrivate