Spec-Zone.ru › Web APIs

VRDisplay: метод requestPresent()

Устаревший: Эта функция больше не рекомендуется. Несмотря на то, что некоторые браузеры могут её поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, находится в процессе удаления или поддерживается только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; см. таблицу совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любой момент.

Нестандартный: Эта функция нестандартна и не соответствует стандартам. Не используйте её на производственных сайтах, ориентированных на веб: она не будет работать для всех пользователей. Также могут быть значительные несовместимости между реализациями, и поведение может измениться в будущем.

Метод requestPresent() интерфейса VRDisplay запускает процесс отображения сцены.

Примечание: Этот метод был частью старого API WebVR. Он был заменён API WebXR Device.

Синтаксис

requestPresent(layers)

Параметры

layers

Массив объектов VRLayerInit, представляющих сцену, которую вы хотите отобразить. В данный момент это значение может быть от 0 до 1.

Возвращаемое значение

Обещание, которое выполняется после начала презентации. Существует ряд правил, касающихся выполнения или отклонения обещания:

  • Если VRDisplayCapabilities.canPresent ложно или если массив VRLayer содержит более чем VRDisplayCapabilities.maxLayers слоёв, обещание будет отклонено.
  • Если VRDisplay уже отображает сцену во время вызова requestPresent(), то VRDisplay обновит массив VRLayer отображаемых объектов.
  • Если вызов requestPresent() отклоняется, в то время как VRDisplay уже отображает сцену, то он завершит презентацию.
  • Если requestPresent() вызывается вне жеста взаимодействия, обещание будет отклонено, если VRDisplay уже не отображал сцену. Этот жест взаимодействия также достаточен для разрешения вызовов requestPointerLock() до завершения презентации.

Примеры

if (navigator.getVRDisplays) {
  console.log("WebVR 1.1 supported");
  // Then get the displays attached to the computer
  navigator.getVRDisplays().then((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", () => {
        if (btn.textContent === "Start VR display") {
          vrDisplay.requestPresent([{ source: canvas }]).then(() => {
            console.log("Presenting to WebVR display");

            // Set the canvas size to the size of the vrDisplay viewport

            const leftEye = vrDisplay.getEyeParameters("left");
            const 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();
        }
      });
    }
  });
}

Примечание: Полный код можно посмотреть на странице raw-webgl-example.

Спецификации

Этот метод был частью старого API WebVR, который был заменён API WebXR Device. Он больше не соответствует стандартам.

Пока все браузеры не внедрят новые API WebXR, рекомендуется полагаться на фреймворки, такие как A-Frame, Babylon.js или Three.js, или полифил, для разработки приложений WebXR, которые будут работать во всех браузерах. Обратитесь к руководству Meta's Porting from WebVR to WebXR для получения дополнительной информации.

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
requestPresent Нет 15–79 98
64–98Поддержка macOS была включена в Firefox 64.
55–98Поддержка Windows была включена в Firefox 55.
Нет Нет Нет 55–98 Нет Нет
6.0Поддержка Google Cardboard в Samsung Internet 7.0.
Нет

См. также

  • API WebVR

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/requestPresent

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API