Last update  Jan 18, 2003 Updated Terrain Engines List
Read the News link for uptodate information including new features/downloads etc.



The DDG Toolkit is a Library of C++ classes to build real time 3D graphics applications.

The reason that this toolkit came into being was because I was tired of reimplementing all sorts of infrastructure each time I wanted to try out some graphics algorithm. By placing this generic functionality in a library and adding to it over time I have been able to develop a flexible architecture allowing me to rapidly design and implement new graphics concepts.

The reason I made this work public is to help other graphics developers to quickly try their own implementation or to serve as examples.

The terrain engine which was developed with DDG (version 4 was incorporated with the Crystal Space portal engine).

The toolkit has stabilized a lot but some higher level features which are not exercised by the terrain engine are probably not working at the moment.

I'm not responsible in any way for any damage this program may incur on you, your family or your computer. I think nothing harmful will happen but if it does, the author (Alex Pfaffe or Digital Dawn Graphics Inc.) is not responsible!



The DDG Toolkit implements over 100 classes which are documented online, downloadable and in the code. Here is an overview of what is included:

Terrain Engine:

The key implementation done with DDG at this time is a real time terrain renderer inspired by the ROAM algorithm. This terrain engine allows you to view meshes of several millions of triangles in real time frame rates with a high level of detail.

To run the terrain engine Accelerated OpenGL is highly recommended as software mode will be about 1FPS.

The terrain engine is very flexible, it supports reading heightmaps and textures from the command line. Heightmaps need not be square. The level of detail that should be shown each frame can be adjusted using 's' to decrease and 'S' to increase detail. All features can be disabled from the command line or interactively while the app is running. Type 'demo -help' to see the command line options and press '?' at runtime to see the keyboard bindings. For more screen shots, look here.

Terrain Classes:

Using the DDG toolkit in your own projects:

It is easy to create your own applications see Tutorial for an example.

If you do use the DDG toolkit I would like to know where it is used and to be Credited where appropriate.

If you find a bug in DDG Toolkit you can contact me . Try to give as much specific information as possible to reproduce a bug.

Suggestions and additions/improvements are also welcome.


Credit should go to Jorrit Tyberghein for running the Crystal Space project, which has allowed many aspiring 3D developers to contribute something to a project which no one person has time to develop on their own. Credit should also go to Mark Kilgard for supplying GLut to the world and also to Brian Paul (author of Mesa) who supplied OpenGL to those of us who couldn't afford to buy an SGI. Also to Linus Torvalds who supplied a free OS to the world and to the 1000s of developers who contributed tools and applications to Linux.

About The Author:

My name is Alex Pfaffe. I was born in Germany, spent my childhood in The Netherlands and moved to Canada where I went to high school and university. There after I worked a while in Calgary. I was offered a job in The Netherlands again where I worked 4 years at a research facility on an OpenGL based graphics infrastructure to model very large scientific datasets.

In 1998, I was offered a job in the US and that is where I am working now. I have been fascinated with Computer Graphics since 1982 when I took my first CS class and did a lot of ascii graphics on a TRS-80 Model3. I then bought my first computer a ColorComputer because it supported a BASIC graphics library in ROM unlike the Apple/Commodore 64 and others where all graphics had to be done in assembler. When generating fractals became to slow and wire frame spinning objects too simple, I abandoned the CoCo and switched to an Amiga 500.

I chose the Amiga 500 because it could do 4096 colours when PCs were still mostly 16 colors. When my Amiga 3000 with 040 accellerator just couldn't keep up anymore for raytracing, I switched to a P133 Laptop which I have been using until recently.

I am now experimenting on a 500Mhz Xeon PentiumIII which offers a rich set of SIMD instructions which along with the GeForce graphics card dramatically accelerate graphics and elevate my ability to experiment with algorithms to yet another level.