OpenGlobe is a 3D engine for virtual globes (think Google Earth or NASA World Wind) designed to illustrate the engine design and rendering techniques described in our book, 3D Engine Design for Virtual Globes. It is written in C# (with full support for running on Linux using Mono) and uses the OpenGL 3.3 core profile via OpenTK. It is not a complete virtual globe application, but is rather a core engine and a number of runnable examples.
OpenGlobe has the following features and capabilities:
- A well designed (and pragmatic) renderer abstraction making it easier and less error prone to interface with OpenGL.
- WGS84 (and other ellipsoid) globe rendering using tessellation or GPU ray casting.
- Techniques for avoiding depth buffer errors when rendered objects are found at widely varying distances from the camera.
- High-precision vertex rendering techniques to avoid jittering problems.
- Vector data rendering, including reading vector data from shapefiles.
- Multithreaded resource preparation.
- Terrain patch rendering using CPU triangulation, GPU displacement mapping, and GPU ray casting.
- Terrain shading using procedural techniques.
- Whole-world terrain and imagery rendering on an accurate WGS84 globe using geometry clipmapping.
The code (and the book) draw from the authors' real-world experience working on STK, one of the earliest commercial virtual globes. Since it is intended as a learning aid, the code is written in a style that we hope is easy to understand and follow, especially when accompanied by the book.
For information on getting up and running with the code on both Windows and Linux, see the instructions here.