I’m working on implementing OpenXR for my 3D Focus Engine, and its overall going pretty good. I’ve got the expected display on my headset and headtracking is working. However, there is terrible latency. When I turn my head, it seems like it takes ~250ms before the scene rotates, causing sickness.
I pass PredictedDisplayTime from the Frame State to EndFrame, gathered via WaitFrame, as I see on examples… the big difference is, I don’t draw to the swapchain image until my frame is done (I just copy from a finished Vulkan texture to the swapchain image). However, I don’t know why this would break prediction or cause latency.
My WaitFrame is here: FocusEngine/OpenXRHmd.cs at master · phr00t/FocusEngine · GitHub
My EndFrame starts here: FocusEngine/OpenXRHmd.cs at master · phr00t/FocusEngine · GitHub
… and all of my other OpenXR code is here. If I use OpenVR (calling the abstract methods at the same place), there is no latency problem. I’m using SteamVR as a runtime.
Also – what is the difference between vulkan and vulkan2? Why are there 2 APIs? I am using vulkan…
Any help is greatly appreciated!