大家好——首先解决一个已解决的问题,然后是两个我仍然卡住的问题。 我正在使用 Unity 6 (6000.5.6f1, OpenXR 1.15.1) 在 Quest 3 上开发一个应用程序,将我的 PC 监视器流式传输到 VR 过 WebRTC (com.unity.webrtc 3.0.0-pre.8)。H264 通过 MediaCodec 流入,接收的纹理在全尺寸下记录——1920x1080 和 1920x1200。 已解决,2026-10-09:抖动。 当我移动我的头部时,我的世界锁定屏幕会抖动。 原因是我的自身引导程序:它在 LateUpdate 中复制了头部姿势,按每帧采样。 将其替换为 TrackedPoseDriver,设置为 UpdateAndBeforeRender 即可解决。 评判:“屏幕静止不动”,badPoses=0。 修复后的构建仍然运行在 72 Hz,仍然显示相同的 336/336 GPU 读数,因此这两个也不是原因。 还未解决:1. 刷新率。 核心 Unity 没有 API 来请求显示刷新率,所以我写了一个自定义 OpenXR 功能,使用 XR_FB_display_refresh_rate 直接。 它首先枚举可用率,然后在会话创建和会话开始时调用 xrRequestDisplayRefreshRateFB,最后在每次调用后读回。 已写,尚未在设备上验证。 有没有在核心 OpenXR,未使用 Meta 包的开发者,见过 FB 请求被拒绝或步行回外部热门? 2. 软文本——仅成本。 每个屏幕已经 Blit 到自己的 mipmapped RenderTexture 之前显示,三线性滤波,等价 4。 我不知道的是 Quest 上的测量成本——每帧 Blit 加上全 mip 重新生成跨越几个视频四边形——我的代码每帧复制。 有没有人测量过它,并且在什么时候 OpenXR 组成层成为可读桌面文本更好的路线? 愿意分享下一个设备运行证明。 谢谢。
解决了:世界锁定的屏幕抖动是因为我每帧都复制了头部姿势——加上两款 Quest 3 的问题
评论 (0)