Next Previous Contents

2. History

Many software packages and algorithms have been developed for the rendering of three dimensional graphics on modern computers. Only certain of these algorithms are of interest in our work because of our interactivity requirement. For example, ray-tracing performs well under many circumstances, but is too slow for our purposes.

Commonly, interactive graphics require some type of hardware assistance for the rendering process. Geometry rendering is notoriously slow, but since it is a repetitive process it can be efficiently implemented in hardware. Many companies produce hardware accelerators for graphical rendering, but each accelerator tends to use its own proprietary library for accessing the hardware. Obviously, none of these libraries are appropriate for the development of general visualization software, since the software would only be usable on the specific hardware platform.

Many attempts have been made to place software layers on top of the specific hardware implementations to make applications portable. These libraries define an API, and software vendors are expected to provide implementations of this API for their hardware. Today, the situation has become clearer, and it appears that OpenGL is the preferred solution on Unix systems and either OpenGL or Direct3D is the preferred solution on Microsoft Windows. These libraries offer the advantage that an application may be developed using them, and this application will then be portable to any hardware which has an implementation of the appropriate API.

To achieve portability and maintain efficient access to hardware renderers, Paffenroth implemented the first version of DataViewer (DataViewer1.0) using OpenGL. Several useful applications were developed using DataViewer1.0, but a few problems were noticed with this approach. First, the development of DataViewer1.0 applications required the user to develop OpenGL code themselves. OpenGL is very general, but quite low level. It only provides simple geometrical primitives (such as lines and triangles), and more high level objects must be implemented separately. Accordingly, writing applications directly in OpenGL can be complex and time consuming. Second, the interface in DataViewer1.0 was written in Motif, a graphical user interface (GUI) library for Unix. Motif, as OpenGL, is very general but low level. Thus, it was not easy to develop custom GUIs in DataViewer. Also, Motif is proprietary software, and even though it is widely available, there exist Unix based systems for which it is either not available or only available at a significant cost.

We decided that our needs called for some type of layer on top of OpenGL, or some similar library, to provide a higher level of abstraction and which would be easier to use. We examined the libraries and packages that were available in late 1996, and found several candidates. Unfortunately, none of the available software exactly met our needs.

Hence we were left with the prospect of creating our own software library. DataViewer2.0 was developed by R. Paffenroth, T. Stone, D. Vrajitoru and A. Ahearn; it is our attempt to create a library which encompasses all of our needs, based on our experiences in the development of DataViewer1.0.


Next Previous Contents