Extending the DIVERSE Graphics Interface to Support OpenGL(tm)

Principal Investigator:

Christopher Logie
(540) 951-6995


This project will use the DIVERSE (http://www.diverse.vt.edu/) programming
system to augment the OpenGL(tm) graphics API (http://www.opengl.org/) so that
one may develop virtual environments and visualization computer programs which
easily scale from desktop workstations to high end visualization tools such
as the VT-CAVE(tm).  The new piece of software will be known as the DIVERSE
Graphics Interface to OpenGL(tm), or dgiGL.


DIVERSE is a application programming interface (API) which allows virtual
environments and visualization applications to scale from desktop workstations
to high end supercomputers without significant code changes.  DIVERSE
currently consists of two parts: DTK, a distributed shared memory tool kit
which allows one share input devices over a network, and dgiPf, which augments
SGI's OpenGL Performer graphics API.

OpenGL(tm) is an industry standard low-level 3D graphics API.  It is important
to visualization for several reasons.  First, it is often a lowest common
denominator for computer graphics.  Different computer systems may support
different high level graphics interfaces, but nearly every one supports
OpenGL(tm). Second, many high level software toolkits are based on OpenGL(tm).
For example, OpenGL Volumizer(tm) is a software toolkit which allows for easy
rendering of volume data on systems which support OpenGL.  Therefore, with
dgiGL the scaleability of DIVERSE can be extended to programs which use many
different high level graphics toolkits.


I have divided the objectives for this project into two sets.  The main
objectives are what will be delivered by the end of the semester.  The
optional objectives define the direction that this project will take after the
semester.  In the case that I finish the main objectives before the end of the
semester, I will begin on the optional objectives.

The main objectives of this class project will be:

    1. To define a logical, clean programming interface for dgiGL.

    2. To implement enough of dgiGL to seamlessly scale several different example programs from a desktop workstation to the VT-CAVE(tm).

    3. To develop a Programming Manual, Reference Manual, and short Tutorial for the dgiGL API.

    4. To develop a WWW presentation for interested professors and students which describes the project, and the level of success that I achieved as measured by these objectives.

The optional objectives of this class project will be:

  1. To "bullet-proof" the implementation of dgiGL so that it may be released for use outside of Virginia Tech.

  2. To demonstrate that higher level toolkits such as OpenGL Volumizer can take advantage of the scaleability of dgiGL.

  3. To Integrate dgiGL with the existing parts of DIVERSE (DTK and dgiPf).

The following objectives are outside of the scope of this class project:

  1. Input Subsystem.  The existing graphics API (dgiPf) has an input subsystem which integrates with DTK, the X Window System, and other input sources. I do not intend to develop from scratch an analogous input system for dgiGL.  Development will begin with no input system, and then the work of Dr. Lance Arsenault from Fall 2000 will be integrated with my work.  In the case that this is not available, my own work on the pre-beta input system for dgiPf from the summer of 2000 will be integrated with my course project.