GetProjectionMatrix
. The 3x4 matrix produced by GetEyeToHeadTransform
doesn’t contain the Z manipulation for the perspective division.
GetProjectionRaw
also has this problem, as it produces the variables required for gluPerspective
, which assumes the Z axis is parallel with the display normal (and that the center of the display is directly ahead of the eye). These assumptions held unusually well for headsets like the Vive (dedicated display panel centered straight ahead of each eye), but not Pimax or Index.
I may be a little mistaken on how these pieces fit together. It could be that the ComposeProjection
example in the GetProjectionRaw
documentation could work correcly when combined with the GetEyeToHeadTransform
, because it has enough variables to convey how off-center the render frame is (while GetEyeToHeadTransform
can contain the rotation). Both gluPerspective
and Microsoft’s sample ProjectionMatrix
assume centered displays, however. D3DXMatrixPerspectiveOffCenterRH
doesn’t.