The Hourglass API repository contains the interface definition and example programs to implement an example “hourglass” interface. This type of interface has C++ at the lower layer, a thin C dynamic library interface in the middle through which all things pass, and another C++ interface at the upper layer. This approach enables both the library implementation and applications to use C++ while providing the benefits of a separately-build DLL that works reliably in many environments. This implementation also includes a Python interface on top of the C++ interface that is built when SWIG is available.
Hourglass encapsulates experience from building hourglass interfaces for two internal projects; one for a virtual reality interface and one for a security camera interface. It also includes experience from the the design of VRPN, experience from the design of a distributed VR library, and experience passed on from the designer of the C API used at UNC for VR. The design choices and reasons behind them are documented in the README.md file.