Why is everything so complicated? I’m currently working on a tracking device, and here’s what’s bothering me. Why can’t OpenXR simply listen to ports for data transfer regardless of the runtime environment? It turns out that to use the hardware in stimvr, you need a stimvr driver, and to use it in a different runtime environment, you also need to initialize the hardware differently… Basically, OpenXR currently doesn’t allow hardware developers to unify drivers. And that’s sad.
What’s StimVR? Do you mean SteamVR?
It’s likely because almost none of the runtime vendors are interested in supporting third-party hardware. The original OpenXR proposal included a driver interface, but it didn’t make it into the spec.
Most XR platforms are locked down proprietary systems, and the vendors want full control of who is allowed to make hardware and software for them.
In the end the specifications that come out of Khronos are what the member companies want to publish, nothing more or less. So even when we don’t like it, it’s just the result of none of the companies putting the effort into bringing such a driver API to completion, at least not yet.
Third party accessory vendors have typically resorted to creating an OpenXR API layer that inserts their device into the communication between OpenXR application and OpenXR runtime, which is more complex but can work decently well on PCVR. API layers on android have historically been difficult though.
The other thing you can do is create a feature request on the GitHub - KhronosGroup/OpenXR-Docs: OpenXR Specification sources and related material · GitHub issues and describe what kind of features you would want from a driver API. It may seem like issues there rarely get feedback, but it really is one of the best place to have a chance of having your input considered by the people working on the spec.