This was a C++/D3D11 Engine I made which wraps around OpenXR to run VR games straight from C++. It supports controllers and hand tracking.


This wrapping engine accomplished my goal of understanding & interfacing with the OpenXR API, the modern standard for VR development. Most OpenXR usage today is done through commercial engines, so using it with pure C++ was an informative journey.
At the time of development, OpenXR's functionality for specialized features such as hand tracking was largely product-specific, which limited cross-platform development. Overall, OpenXR's usability covers almost every use case with relative ease.

For the project, I wanted to use a separate renderer for my monitor's view vs. the VR view, whereas many such as SteamVR and Quest Link simply mirror an eye view. I wanted the functionality to render debug info into the world for PC use, such as raycasts and a flycam for exploring levels. This meant tracking two sets of renderers and shaders which posed a challenge during development. Figuring out the bare minimum they can share for simplicity without compromising either's functionality was a good learning opportunity for both OpenXR and Direct3D.