(brianp@valinux.com)
Copyright (c) 2000 by Brian Paul. All Rights Reserved.
Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies.
Permission to modify this document may be granted to those who get approval from Brian Paul.
In most 3D applications, other than games, the 3D content exists within a traditional graphical user interface. For example, the primary workspace in a 3D modelling program is a 3D viewing window surrounded by UI buttons, menus and scrollbars.
The best way to incorporate OpenGL drawing in graphical applications is to use an OpenGL user interface component or widget. On Linux we have a large number of user interface toolkits to choose from. Luckily, there are OpenGL widgets for most of these toolkits.
The following sections list and briefly describe the most popular of these OpenGL widgets.
Xt, the X Toolkit Instrinsics library, is built on Xlib and is designed to be a foundation on which user interface toolkits may be built. The best known example of this is Motif.
The GLwDrawingArea (Xt-based) and GLwMDrawingArea (Motif-based) widgets were probably the first UI widgets for OpenGL.
References
OpenGL and X, Part 3: Integrating OpenGL with Motif by Mark Kilgard. (http://www.sgi.com/software/opengl/glandx/motif/motif.html)
The Qt toolkit was developed by Trolltech AS of Norway and is the UI toolkit for the popular K Desktop Environment (KDE).
The OpenGL widget, QGLWidget, is included in both the Professional and Free Editions of Qt.
References
Qt OpenGL Extension (http://www.trolltech.com/products/qt/opengl/)
Trolltech Home Page (http://www.trolltech.com/)
The GTK toolkit was originally written for the GIMP, a popular image editing application. GTK has since evolved into GTK+ and is now the UI toolkit used by the GNOME desktop environment.
GtkGLArea is the OpenGL widget for GTK+. There is also GtkGLArea--, a C++ OpenGL widget for GTK-- (the C++ version of GTK+.)
References
GtkGLArea (http://www.student.oulu.fi/ jlof/gtkglarea/)
GtkGLArea-- (http://www.ece.ucdavis.edu/ kenelson/gtk-glarea/)
GTK Home Page (http://www.gtk.org)
Tcl is a popular interpreted scripting language and Tk is a user interface built on top of it.
The Togl widget is a Tcl/Tk widget for OpenGL rendering. It was originally written by Ben Bederson and later enhanced by Brian Paul.
References
Togl home page (http://togl.sourceforge.net)
Tcl/Tk Information page (http://www.tcltk.com)
FOX is a C++ user interface toolkit designed for ease of use.
The FXGLCanvas widget is a basic OpenGL canvas while FXGLViewer is a complete 3D model viewer canvas with 3D rotation, translation and zooming.
References
FOX Home Page (http://www.cfdrc.com/FOX/fox.html)
GLOW is cross-platfrom C++ tookit based on GLUT especially designed for 3D OpenGL applications.
The GlowWindow class defines OpenGL rendering windows.
References
GLOW Home Page (http://www.ugcs.caltech.edu/ dazuma/glow/index.html)
JX is an application framework and widget library designed and optimized for the X Window System.
The J3D and JX3D components support OpenGL rendering.
References
J3D Information (http://www.newplanetsoftware.com/jx/j3d.html)
JX Home Page (http://www.newplanetsoftware.com/jx/)
XForms is a free X-based GUI toolkit written by T. C. Zhao based on the original Forms library by Mark Overmars.
The glcanvas component is used for OpenGL rendering.
References
OpenGL canvas documentation (http://www.westworld.com/ dau/xforms/node5.html#SECTION05840700000000000000)
XForms Home Page (http://world.std.com/ xforms/)
FLTK (Fast Light ToolKit) is a LGPL'd, C++-based interface toolkit for the X11/Unix and Win32. It was originally developed at Digital Domain.
The Fl_Gl_Window widget is used for OpenGL rendering.
References
FLTK Home Page (http://www.fltk.org/)
Fl_Gl_Window widget reference page (http://www.fltk.org/doc/Fl_Gl_Window.html)