Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions

OpenGL Overlay X11 Example

Warning: From version 5.0 onwards, the Qt OpenGL Extension includes direct support for use of OpenGL overlays. For many uses of overlays, this makes the technique described below redundant. See the overlay example program. The following is a discussion on how to use non-QGL widgets in overlay planes.

Overlayrubber: An example program showing how to use Qt and Qt OpenGL Extension with X11 overlay visuals.

See $QTDIR/examples/opengl/overlay_x11 for the source code.

Background information for this example can be found in the information on overlays.

The example program has three main parts:

  1. GearWidget - a normal, simple QGLWidget. This renders the usual gears. It has been modified to print a debug message every time it redraws (renders) itself. Thus, you can easily confirm that drawing in the overlay plane does not cause redrawings in the main plane where the QGLWidget resides.

  2. RubberbandWidget - Very simple standard (non-GL) Qt widget that implements rubberband drawing. Designed for use in an overlay plane. It takes the plane's transparent color as a constructor argument and uses that for its background color. Thus, the widget itself will be invisible, only the rubberbands it draws will be visible.

  3. main.cpp Creates a GearWidget and a Rubberbandwidget and puts the latter on top of the former. Contains a routine that checks that the default visual is in an overlay plane, and returns the transparent color of that plane.

Running the Example

Start the overlayrubber executable. Click and drag with the left mouse button to see rubberband drawing. Observe that the QGLWidget does not redraw itself (no redraw debug messages are output), and yet the image is not destroyed. Marvel at the coolness of X11 overlays!

Using this technique in a real application

For clarity, this example program has been kept very simple. Here are some hints for real application usage:

See also OpenGL Examples.


Copyright © 2002 TrolltechTrademarks
Qt version 3.0.5