summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@digia.com>2012-12-11 16:58:14 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-12 10:47:48 +0100
commit508db17de38b2940d95742319abcb84ee4ca8b86 (patch)
tree3871c4cb6f58b967eae66da06d3037ae38943bc5
parent2efaee43f7c916919507860ab17e9b1d86b2f508 (diff)
Some fixes to the OpenGL docs in GUI
Change-Id: I6415ff16b1765a5814d50a4cd39db00495d43073 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
-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