VideoTexture 未在 VR 中播放

VideoTexture is not playing in VR

起初纹理工作正常并且视频按预期播放,但是当通过 VRDisplay.requestPresent 进入 VR 时它停止了。为什么会这样,如何解决?

VR 显示器有自己的渲染循环。通常 needsUpdate 在每个动画帧上由 three.js 自动设置为 true,但这仅适用于默认显示。

要解决此问题,请从 vrdisplayconnect 事件中获取 VR 显示并创建您自己的更新循环。例如

let display = e.display;
let displayUpdateLoop = () =>
{
    // May get a warning if getFrameData is not called.
    let frameData = new VRFrameData();
    display.getFrameData(frameData);

    videoTexture.needsUpdate = true;

    // Stop loop if no longer presenting.
    if (display.isPresenting)
        display.requestAnimationFrame(displayUpdateLoop);
}
display.requestAnimationFrame(displayUpdateLoop);