Note: This website is archived. For up-to-date information about D projects and development, please visit

Welcome to OpenMesh/D

OpenMesh/D is a native port of of OpenMesh to the D programming language.

OpenMesh is a library for manipulating polygonal meshes. The underlying data structure used is the ever-popular half edge representation. The main drawback of this representation is that it is limited to orientable manifold meshes. Despite this, the halfedge representation is probably the most popular around, because it's relatively lean for the amount of flexibility it gives you. Lutz Kettner wrote a nice comparison of mesh data structures, comparing halfedge and quadedge and others.

More information can be found in the OpenMesh/C++ introduction.


OpenMesh/D is under the LGPL v2.1. This is the license used by the orignal C++ library, so there was little choice in this matter.

About the Port

The port is based on OpenMesh beta version 1.9.5.

The port uses the Phobos library, and has been tested with DMD 1.021 on Windows. More detailed documentation about differences between the port and the original is available.

The authors of the original C++ version are aware of the existence of this port, but no one seems to be actively working on the original OpenMesh these days.


The goal of porting OpenMesh to D is just to have a decent mesh manipulation library in D.

Long term, there is no intention to try to preserve any sort of source compatibility with the original OpenMesh as the D version evolves, since I don't think there would be much point in that. In the short term, until ddoc generation is fully operational, I'd like to keep the port close to enough to the original that the C++ documentation will suffice.

Compatibility of the native binary files written by OpenMesh would be nice to preserve. I'm not going to guarantee compatibility, but I'm also not going to go and arbitrarily break it just for kicks.

About the Authors

The main kudos go to the authors of the original library. The port was done by Bill Baxter.

For a complete list of local wiki pages, see TitleIndex.