Spec-Zone.ru › Web APIs

XRViewport

Ограниченная доступность

Данная функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Интерфейс XRViewport API устройств WebXR предоставляет свойства, используемые для описания размера и положения текущего области просмотра внутри XRWebGLLayer, используемой для отрисовки 3D-сцены.

Свойства экземпляра

height Только для чтения

Высота области просмотра в пикселях.

width Только для чтения

Ширина области просмотра в пикселях.

x Только для чтения

Смещение от начала поверхности графического назначения (обычно XRWebGLLayer) до левого края области просмотра в пикселях.

y Только для чтения

Смещение от начала области просмотра до нижнего края области просмотра; система координат WebGL размещает (0, 0) в левом нижнем углу поверхности.

Примечания по использованию

В настоящее время единственный доступный тип поверхности — XRWebGLLayer. Точное расположение системы координат может варьироваться для других типов поверхностей, но в WebGL начало координат (0, 0) расположено в левом нижнем углу поверхности. Таким образом, значения, указанные в XRViewport, определяют прямоугольник, левый нижний угол которого находится в (x, y), и который простирается на width пикселей влево и на height пикселей вверх.

Эти значения можно напрямую передать в метод WebGLRenderingContext.viewport():

const xrViewport = xrWebGLLayer.getViewport(xrView);
gl.viewport(xrViewport.x, xrViewport.y, xrViewport.width, xrViewport.height);

Пример

В этом примере настраивается обратный вызов кадра анимации с использованием requestAnimationFrame(). После начальной настройки он итерируется по каждому представлению в позе зрителя, настраивая область просмотра в соответствии с XRWebGLLayer.

xrSession.requestAnimationFrame((time, xrFrame) => {
  const viewerPose = xrFrame.getViewerPose(xrReferenceSpace);

  gl.bindFramebuffer(xrWebGLLayer.framebuffer);

  for (const xrView of viewerPose.views) {
    const xrViewport = xrWebGLLayer.getViewport(xrView);
    gl.viewport(
      xrViewport.x,
      xrViewport.y,
      xrViewport.width,
      xrViewport.height,
    );

    // Now we can use WebGL to draw into a viewport matching
    // the viewer's needs
  }
});

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

Спецификация
API устройств WebXR
# xrviewport-interface

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
XRViewport 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
height 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
width 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
x 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
y 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет

© 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/XRViewport

Spec-Zone.ru

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