This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The cancelAnimationFrame()
method of the VRDisplay
interface is a special implementation of Window.cancelAnimationFrame
that unregisters callbacks registered with VRDisplay.requestAnimationFrame()
.
vrDisplayInstance.cancelAnimationFrame(handle);
VRDisplay.requestAnimationFrame()
call that you want to unregister.Void.
canvas.width = window.innerWidth; canvas.height = window.innerHeight; drawScene(); // WebVR: Check to see if WebVR is supported if(navigator.getVRDisplays) { console.log('WebVR 1.1 supported'); // Then get the displays attached to the computer navigator.getVRDisplays().then(function(displays) { // If a display is available, use it to present the scene if(displays.length > 0) { vrDisplay = displays[0]; console.log('Display found'); // Starting the presentation when the button is clicked: It can only be called in response to a user gesture btn.addEventListener('click', function() { if(btn.textContent === 'Start VR display') { vrDisplay.requestPresent([{ source: canvas }]).then(function() { console.log('Presenting to WebVR display'); // Set the canvas size to the size of the vrDisplay viewport var leftEye = vrDisplay.getEyeParameters('left'); var rightEye = vrDisplay.getEyeParameters('right'); canvas.width = Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2; canvas.height = Math.max(leftEye.renderHeight, rightEye.renderHeight); // stop the normal presentation, and start the vr presentation window.cancelAnimationFrame(normalSceneFrame); drawVRScene(); btn.textContent = 'Exit VR display'; }); } else { vrDisplay.exitPresent(); console.log('Stopped presenting to WebVR display'); btn.textContent = 'Start VR display'; // Stop the VR presentation, and start the normal presentation vrDisplay.cancelAnimationFrame(vrSceneFrame); drawScene(); } }); } }); } else { info.textContent = 'WebVR API not supported by this browser.' } function drawVRScene() { // WebVR: Request the next frame of the animation vrSceneFrame = vrDisplay.requestAnimationFrame(drawVRScene); ... }
Note: You can see this complete code at raw-webgl-example.
Specification | Status | Comment |
---|---|---|
WebVR 1.1 The definition of 'cancelAnimationFrame()' in that specification. | Draft | Initial definition |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | No | 15 | 55
|
No | ? | ? |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | No | 56
|
? | ? | ? | ? | 6.0 |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/cancelAnimationFrame