OpenGL UI Widgets for Linux

Brian Paul (brianp@valinux.com)

25 June 2000


This document describes a number of user interface (UI) widgets or components which may be used to integrate OpenGL into a traditional graphical application.

1. Copyright

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.

2. Introduction

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.

3. Xt/Motif

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)

4. Qt

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/)

5. GTK+

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)

6. Tcl/Tk

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)

7. FOX

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)

8. GLOW

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)

9. JX

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/)

10. XForms

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/)

11. FLTK

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)