Important: Please read the Qt Code of Conduct -

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 and eyeCamera->transform()->setMatrix are properly applied when I next call m_renderAspectPrivate->renderSynchronous(false)


    • 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.

  • 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.

Log in to reply