--- title: VRDisplay.requestPresent() slug: Web/API/VRDisplay/requestPresent tags: - API - Experimental translation_of: Web/API/VRDisplay/requestPresent original_slug: Web/API/VRDevice/requestPresent ---
{{domxref("VRDisplay")}} インターフェイスの requestPresent() メソッドは,VRDisplay へのシーン表示を開始します.
vrDisplayInstance.requestPresent(layers).then(function() {
// Do something after the presentation has begun
});
表示が開始されたかを解決するpromise.
注記: {{domxref("VRDisplayCapabilities.canPresent")}} が false,あるいは VRLayer 配列数が {{domxref("VRDisplayCapabilities.maxLayers")}} レイヤより多い場合, promiseはリジェクトされます.
注記: requestPresent() を呼出した時にVRDisplay が表示中の場合,VRDisplay は表示する VRLayer 配列を更新します.VRDisplayが表示中で requestPresent() がリジェクトされたら,VRDisplay は表示を終了します.
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();
}
});
}
});
}
Note: You can see this complete code at raw-webgl-example.
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('WebVR', '#dom-vrdisplay-requestpresent', 'requestPresent()')}} | {{Spec2('WebVR')}} | Initial definition |
{{Compat("api.VRDisplay.requestPresent")}}