Qt3D VR rendering
-
I need to integrate a Qt3D project with OpenXR. However, the asynchronous model of of Qt3D doesn't really mesh very well with OpenXR APIs. Specifically, when I start an OpenXR frame, I get the eye poses I need to use for the rendering... I need to synchronously execute the render with those poses, and then submit the frame to OpenXR.
Strictly speaking, I can submit poses to OpenXR that are different than the ones it gave me, but that just moves the problem to finding a reliable way to find out what the current camera poses are.
So I need to be able to do one of two things...
- Ensure that my most recent changes to the cameras via
eyeCamera->lens()->setProjectionMatrix
andeyeCamera->transform()->setMatrix
are properly applied when I next callm_renderAspectPrivate->renderSynchronous(false)
OR
- Immediately after calling
m_renderAspectPrivate->renderSynchronous(false)
, be able to determine the exact projection matrix and transform used by the eye camera
Right now I'm working in 5.13.1 but I know there have been some changes in this area in 5.14 and I'm happy to switch if it will make solving this problem easier.
- Ensure that my most recent changes to the cameras via
-
I eventually discovered that the frame latency was not inside the Qt code, but on my side, in the order I was calling OpenXR functions and Qt functions.