OpenXR Support for PC Development

Native SDK

The Oculus PC SDK includes the resources necessary to use the OpenXR API for native C/C++ development of VR apps. OpenXR offers an alternate development path that allows developers to create portable code that can be used on devices from multiple vendors.

About OpenXR

OpenXR is a royalty-free open standard from the Khronos Group created for the development of high-performance VR applications that run on multiple platforms. OpenXR aims to simplify VR development by enabling developers to reach more platforms while reusing the same code. To read more about OpenXR, see the Khronos OpenXR webpage.

Product is based on a published Khronos specification and is expected to pass the Khronos Conformance Process when available. Current conformance status can be found at

OpenXR for Native C/C++ PC Development

To begin using OpenXR for Oculus PC development, developers must meet the following requirements:

  • Oculus PC runtime v19 or later.

Use the OpenXR headers and loader from the Khronos Group’s OpenXR-SDK GitHub page. Use the Windows 32-bit or 64-bit loader build instructions to match your application’s configuration.

OpenXR Developer Documentation

After confirming that you meet the requirements, you can learn about using OpenXR to develop VR apps by reading the OpenXR 1.0 Specification at the Khronos Group site. The site also offers API reference documentation and a PDF reference guide that provides a detailed overview of the API.

Additional development resources, such as the hello_xr sample code, can be found at the Khronos Group’s OpenXR-SDK and OpenXR-SDK-Sources GitHub pages.

Known Issues

Please note that there are some known issues with this release. Fixes for the following will go out in the next release:

  • The XR_EXT_debug_utils extension has not yet been implemented. App developers should still use the extension, but it will not retrieve detailed messages from the runtime.
  • Action spaces continue to track even when isActive == false, which is conformant but misaligned with other runtimes. This will cause issues if relying on on tracking state vs. isActive for rendering hands.
  • Parent interaction profile bindings are missing for non-natively supported profiles (everything besides the simple, Oculus Touch, and XBox controller profiles).