Details
-
Bug
-
Resolution: Cannot Reproduce
-
P2: Important
-
None
-
5.14.0 Beta 1
-
None
-
Windows 10, Oculus Rift S.
Description
I'm attempting to build a set of examples for OpenXR using a variety of rendering backends, including Qt3D.
Because of the nature of VR/AR rendering, this requires rendering Qt3D in synchronous mode, and also requires that modifications to the transforms of the camera objects in the scene happen synchronously. However, when I run the example it's very clear that there is latency between updating the camera transform and when the updated camera transform takes effect in a subsequent call to `processFrame` and `renderSynchronous`
I've written a set of code that uses the C++ interface to set up a Qt3D scene and creates a stereo rendering setup here: https://github.com/jherico/OpenXR-Samples/blob/qt3d/src/common/qt/scene.cpp
The `Scene::updateHands`, `Scene::updateEyes` and `Scene::render` functions there are all triggered (in that order) by a QTimer object. The effect in the headset makes it very clear that there is are at least 1 or more frames of latency between the call to `updateEyes` and the transform of the cameras used by the next render. Not being able to synchronously set (or at least fetch) the camera transforms for a specific rendered frame will make Qt3D completely useless as a rendering backend for VR or AR.