--- title: VRDisplay.requestPresent() slug: Web/API/VRDisplay/requestPresent tags: - API - Experimental translation_of: Web/API/VRDisplay/requestPresent original_slug: Web/API/VRDevice/requestPresent ---
{{APIRef("WebVR API")}}{{SeeCompatTable}}

{{domxref("VRDisplay")}} インターフェイスの requestPresent() メソッドは,VRDisplay へのシーン表示を開始します.

シンタックス

vrDisplayInstance.requestPresent(layers).then(function() {
  // Do something after the presentation has begun
});

パラメータ

layers
表示したいシーンを表す {{domxref("VRLayer")}} オブジェクトの配列.なお現時点では,指定できるのは最小0要素,最大1要素です.

戻り値

表示が開始されたかを解決する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

ブラウザの互換性

{{CompatibilityTable}}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatNo}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}}

参照