OpenGLTM

Updated July 2017

Overview

Developed originally by Silicon Graphics Inc, OpenGL is a 2D/3D graphics library which is available on Windows, Linux and Mac. OpenGL's main strengths are in the areas of 3 dimensional visualisation and animation. Winteracter programs can utilise OpenGL in two different ways:

  • Direct calls to OpenGL functions in the GL and GLU libraries (1.10), via a Fortran oriented calling interface derived from f90gl.
  • Calls to Winteracter 3D modelling routines which provide a substantially simplified calling interface.

Winteracter's interface to OpenGL consists of three main components:

  • A module called OPENGL which provides a Fortran interface to the various OpenGL graphics routines. The routine names are the same as the C originals. Fortran 90 data types are also defined which are directly analagous to the C equivalents. Together, these simplify translation of C based OpenGL code to Fortran 9x/200x.
  • A routine called WglSelect which selects a target drawing surface for OpenGL output.
  • Winteracter's own 3D modelling routines include an OpenGL-based renderer called WglShow, providing OpenGL performance to programs which do not otherwise call OpenGL directly.

Winteracter includes OpenGL support on all of Windows, Linux and Mac.

Advantages

While other OpenGL interfaces exist for use from Fortran based applications, the Winteracter OpenGL interface offers some significant advantages:

  • OpenGL graphics can be routed to a window, memory bitmap or dialog field.
  • OpenGL images can be printed via WglPrintImage or saved to bit image files via WglSaveImage.
  • The full range of menu types (horizontal menu bar, toolbar and floating menus are all available).
  • All the other Winteracter facilities are simultaneously available, combining state of the art 3D graphics, with extensive user-interface and scientific graph plotting capabilities.
  • Text handling has been added (see below).
  • When used with the Winteracter 3D modelling routines, model descriptions can be saved to or loaded from disk, in either a proprietary binary format or the industry standard DXF format.
  • The OpenGL renderer provided with the Winteracter 3D modelling routines, provides a "best of both worlds" solution. Developers who are unfamiliar with OpenGL or who are uncomfortable with the C orientation of most OpenGL training material, can still gain access to OpenGL performance.

Text Handling

Since OpenGL provides no text output facilities as standard, Winteracter includes a set of text support routines which are closely modelled on its own graphics text handling facilities. These OpenGL text support functions provide access to any True Type font under Windows and to a handful of built-in software-based vector fonts on all supported platforms.

Documentation and Examples

When calling OpenGL functions directly, we recommend use of a suitable reference book. However, since most of the available reference material is C oriented, the supplied documentation includes brief Fortran oriented descriptions of all of the supported OpenGL functions. A selection of example programs are also included to illustrate use of OpenGL in Winteracter-based applications.

3D Model Viewer

An OpenGL-based 3D model viewer called 3Dview is included among Winteracter's visual tools.

3Dview provides a highly responsive display of model files created by the Winteracter 3D modelling routines. It can also display many 3D models created by third party applications in DXF format.

The model viewer can be redistributed with Winteracter based applications.

Demo

An OpenGL demo program can be downloaded which illustrates some of the effects which can be achieved with the Winteracter OpenGL interface. The demo illustrates both direct calls to the OpenGL API and 3D modelling via Winteracter's own, easier-to-use, calling interface.

Acknowledgements

OpenGL is a trademark of Silicon Graphics Inc.

The OPENGL module included with Winteracter is a derivation of f90gl, the official Fortran 90 OpenGL interface written by William F. Mitchell of the Mathematical and Computational Sciences Division, National Institute of Standards and Technology, Gaithersburg, MD 20899, USA. While ISS provided some minor assistance in the Win32 implementation of the f90gl interface, the credit for that interface belongs to William Mitchell. The Winteracter implementation of the OpenGL interface differs from f90gl in several ways:

  • The internal Fortran/C calling interfaces have been revised to ensure their correct operation with all the Windows Fortran compilers supported by Winteracter.
  • The GLUT interface has been omitted since this is not required in Winteracter based programs.
  • The various separate modules in the f90gl interface have been consolidated into a single module. It is only necessary to add a single USE OPENGL statement per program unit to gain access to all the OpenGL routines and data types.
  • The additional object code libraries which accompany the f90gl interface are subsumed in the Winteracter library in Windows implementations, thereby simplifying the linking procedure. The X Windows version provides a single separate libwintGL.a OpenGL support library.
  • Support for implementation-specific OpenGL extension routines can optionally be built into f90gl via a series of pre-processor switches. However, since this involves rebuilding the interface for each target OpenGL implementation (which in turn requires a C compiler) this support has been omitted from the Winteracter OpenGL interface.

Further Information

A great deal of information and sample code is available on the World Wide Web relating to OpenGL. The official OpenGL web site provides extensive links to relevant material. Information about f90gl is available at the NIST f90gl home page

For more information email: