首先,纹理工作正常,视频按预期播放,但是当通过VRDisplay.requestPresent
输入VR时,它会停止。这是为什么以及如何解决它?
答案 0 :(得分:1)
VR显示器有自己的渲染循环。通常,{em> three.js 会在每个动画帧上将needsUpdate
自动设置为true
,但这仅适用于默认显示。
要解决此问题,请从vrdisplayconnect
事件中获取VR显示并创建自己的更新循环。 E.g。
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);