diff options
-rw-r--r-- | examples/gui/doc/images/openglwindow-example.png (renamed from doc/src/images/openglwindow-example.png) | bin | 19920 -> 19920 bytes | |||
-rw-r--r-- | src/gui/kernel/qopenglcontext.cpp | 2 | ||||
-rw-r--r-- | src/gui/opengl/qopenglpaintdevice.cpp | 44 |
3 files changed, 41 insertions, 5 deletions
diff --git a/doc/src/images/openglwindow-example.png b/examples/gui/doc/images/openglwindow-example.png Binary files differindex 63ba4ed2f4..63ba4ed2f4 100644 --- a/doc/src/images/openglwindow-example.png +++ b/examples/gui/doc/images/openglwindow-example.png 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 |