If GL_ARB_clip_control not available then [znear, zfar] -> [1, -1] instead of [1, 0] in normalized device coordinates
Thus, Z is still reversed, but not shifted, clipping should still work properly, and conversion to window coordinates does not cause accuracy regression compared to non-reversed Z rendering.
I am running through simulate.swift (my port of simulate.cc) with
address sanitizer to discover related bugs.
Besides ones in my port, there are two in MuJoCo:
1. in maketext, the logic to find . is not protected against j is less
than 0 (due to the decreasing logic above), creating out of bound
access.
2. in mj_printFormattedData, qfrc_applied should use length nv not nq,
otherwise out of bound access could be triggered.
Test Plan:
Run through the simulate.cc with asan. Before this fix, when presenting
profiler view, it will trigger bug #1. When print data, it will trigger
bug #2. Both are using model/humanoid/22_humanoids.xml.