Why would framerate only appear smooth if head was in motion?

This has been driving me crazy. The frame rate of my application is high. In VR it is easily maxing out the device’s refresh rate (I’m using a Pimax 8KX). But I find that if I keep my head still what I see in the display is not animating smoothly (again even though I see the frame rate is high based on how many times xrEndFrame is getting called.

But if I move my head slightly everything looks smooth.All I can think of is that maybe something is preventing my rendered frames from being displayed because of something to do with tracking? I’m creating a seated experience so I have no 6DOF just head rotation. Any ideas?

hi @Cecil
Still not an OpenXR nerd.
It sounds like a problem in this family: I draw & edit points in d2. Dragging a point happens in a continous loop executing drag(dX,dY). dXdY = cursorPosition - cursorPositionOld . If you don’t set the two positions to the same position at mouse-down, you’ll get a large jump in the drag.

It may be far away from your problem, but there’s something about your description of the symptoms …
Or, you could have placed a variable the wrong place in the sense that it’s defined over and over again, starting at a default value instead of maintaing some value continously.

No this is something different I’m afraid. It’s entirely smooth when rendered to desktop and smooth in VR IF my head is not still.

That would be moving objects and not fixed background.
Do they maintain a general path but skips something and jumps forward or do they return to start?
They move according to some algorithm, very likely with some timer-dependant variable involved. They use your view-matrix too, but error here would influence the whole scene.
Is the timer-variable refreshed even though you don’t move your head? In opengl you are in charge of the main-loop that usually calls drawing/swap-buffers at end and detects hardware-input/changes (poll-events) at start of next loop. One can choose to loop without either of the two for some specific task. I suspect that swap-buffers are called more often than poll-events …