VRHow / All sections / How-to / Use OpenXR
How to use OpenXR
What OpenXR does Informational
Khronos describes OpenXR as a royalty-free, cross-platform API for AR and VR devices. An OpenXR application talks to a runtime, which maps the API to a particular headset, controller and tracking system; the application is not directly choosing a single headset vendor’s proprietary API. The standard can still expose platform-specific capabilities through extensions, so “OpenXR” does not guarantee that every feature works on every device. See the Khronos OpenXR overview.
Use an OpenXR application on a PC Action
Choose this path if you are running a game or tool, not writing one. You do not normally download “OpenXR” separately. The headset platform supplies the runtime; the application uses the active runtime through the loader.
- Confirm the application supports OpenXR and complete the headset maker’s PC setup first. OpenXR does not replace the vendor’s connection software, firmware updates, graphics-driver requirements, or cable/wireless transport. If the headset is not detected by its own software, fix that connection first rather than changing OpenXR settings.
- Install or update the platform runtime. Use the platform named by the headset or application. Khronos’ conformant-products list is useful for checking whether a runtime/device combination has passed conformance, but it is not a promise that every application feature or extension is available on every combination.
- Select the intended active runtime only when needed. Multiple VR platforms can overwrite the active choice. For Meta Horizon Link, open Settings > General and, next to OpenXR Runtime, select Set Meta Horizon Link as active; the control is grayed out when it is already active. For Windows Mixed Reality, Microsoft says the runtime is activated automatically; if another platform changed it, open Mixed Reality Portal and select Fix it. For other platforms, use that vendor’s current documented control—do not edit the registry or install an unofficial switch as a first step.
- Launch in a safe, known-good order. Start the headset and its platform software, clear the play area, then launch the application. The expected result is that the application opens in the connected headset and its controllers/tracking are available. If it asks which runtime to use, choose the platform you actually connected and configured; otherwise do not assume a runtime selector exists.
Pick the right next check
- Headset absent from vendor software: this is a connection/setup problem, not an OpenXR API problem. Recheck the vendor’s Link, cable, wireless, or base-station setup.
- Headset detected but the app opens on the monitor or reports no runtime: verify the active runtime, then restart the platform software and app. On Windows Mixed Reality, OpenXR Tools can display the active runtime and current headset.
- The app starts but a feature or controller binding is missing: check the app’s target runtime, interaction profiles, and requested extensions. OpenXR allows platform-specific extensions, so portability does not mean feature parity.
- A runtime change fixes one app but breaks another: restore the runtime required by the headset/app you are using. Treat the active runtime as a per-session platform choice, not a universal performance setting.
Start developing with OpenXR Action
Choose this path only if you are building an application. For a native Windows C/C++ project, the loader discovers the active runtime and exposes the core API plus published extensions. Microsoft documents two supported starting points: reference the official OpenXR.Loader NuGet package, or include/build the loader from the Khronos OpenXR-SDK. This is a development dependency, not a consumer “OpenXR installer.”
- Install the platform’s development tools and headset/runtime first. For Meta native PC development, Meta’s current documentation lists Oculus PC runtime v19 or later; treat that as a documented minimum for that path, not a guarantee that every current Meta feature is supported.
- Add the loader using the NuGet package or Khronos SDK, then include
<openxr/openxr.h>as appropriate to your build. Match the loader/build architecture to the application and follow the SDK’s CMake/build instructions. - Run the official Microsoft BasicXrApp sample or a Khronos sample before adding your own rendering and input code. A sample that runs confirms a basic environment; it does not prove that your chosen extensions, interaction profiles, or graphics backend are supported.
If an OpenXR app will not start
Diagnosis first: check, in order, that (1) the headset is detected by its vendor software, (2) the intended runtime is active, (3) the application and platform software are current, and (4) the GPU driver and platform requirements are met. Then restart the platform software and headset before changing settings. Microsoft’s OpenXR Tools for Windows Mixed Reality can show the active runtime and headset and run a demo scene. A missing extension or controller binding is a compatibility limitation to investigate in the application and runtime documentation—not a reason to bypass safety controls, edit the registry, open the headset, or factory-reset it.
Keep the boundary and play area visible and clear, and stop if tracking is lost or you feel unwell. OpenXR changes the software interface; it does not remove the headset maker’s safety requirements.
Sources
- Khronos Group: OpenXR — standard definition, runtime model, conformant runtimes and supported engines.
- Microsoft Learn: Getting started with OpenXR — active-runtime behavior, OpenXR Tools, loader integration and sample workflow.
- Meta for Developers: OpenXR Support for PC Development — Oculus PC runtime requirement and Khronos SDK guidance.
- Meta for Developers: Use Link for App Development — current Meta Horizon Link runtime-selection path and Link connection checks.
- Khronos: OpenXR conformant products — the conformance list used here as a compatibility signal, not a guarantee of application feature parity.
