Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News OpenXR 0.90 Aims to Solve AR/VR Fragmentation

OpenXR 0.90 Aims to Solve AR/VR Fragmentation

The Khronos Group has published the first OpenXR specification and API with version number 0.90. OpenXR is an open, royalty-free standard for augmented reality (AR) and virtual reality (VR) platforms and devices that aims to simplify AR/VR software development on multiple platforms and devices.

OpenXR includes a set of abstractions that define how XR hardware platforms expose their runtime systems in a standard way so software developers can more easily make their AR/VR software run on hardware from different vendors. OpenXR covers aspects of AR/VR systems such as application lifecycle, rendering, tracking, frame timing, and input. This means for example that OpenXR could make it easier to support Samsung Gear VR, Oculus, and Steam VR devices within the same app.

From an architectural point of view, OpenXR is composed of two main layers: an OpenXR Device Plugin Extension and an higher-level OpenXR API. The plugin extension is meant to run on top of vendor-specific device drivers which provide direct access to AR/VR devices and translate their functionality in a standard way. The OpenXR API runs on top of the runtime system developed by the AR/VR vendor and dealing with functionality like distortion correction, display output, coordinate system unification, etc. The plugin extension is optional and aims to make it easier for device vendors to create their AR/VR runtime systems running on multiple devices.

OpenXR defines a number of fundamental abstractions, such as:

  • XrSpace: a representation of space independent from the one internally used by the runtime.
  • XrInstance: a representation of the OpenXR runtime for the application.
  • XrSystem: a logical representation of related devices, such as head-mounted-devices and controllers.
  • Sessions: a session allows the programmer to say they want to enter or leave an interactive state.
  • Events: sent from the runtime to the application, events represent changes in the state of the system.
  • XrActions: actions allow applications to handle input. They can be for example, "move", "jump", "teleport", etc.

OpenXR 0.90 is the result of the work of nearly two years from the consortium members and is accompanied by its first implementations, including OpenXR runtimes for Collabora Monado and Microsoft Mixed Reality.

You can access the OpenXR provisional specification on the Khronos Group website.

Rate this Article