Spec-Zone.ru › Web APIs

XRWebGLBinding: метод createEquirectLayer()

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

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

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

Экспериментально: Это экспериментальная технология
Перед использованием в продакшене внимательно ознакомьтесь с таблицей совместимости браузеров.

Метод createEquirectLayer() интерфейса XRWebGLBinding возвращает объект XREquirectLayer, представляющий слой, отображающий закодированные данные прямоугольной проекции на внутреннюю поверхность сферы.

Синтаксис

createEquirectLayer(options)

Параметры

options

Объект для настройки XREquirectLayer. Он должен содержать свойства space, viewPixelHeight, и viewPixelWidth. init имеет следующие свойства:

centralHorizontalAngle Необязательно

Число, представляющее центральный горизонтальный угол сферы в радианах. Значение по умолчанию: 6.28318 (2π).

colorFormat Необязательно

Значение GLenum, определяющее тип данных цветовой текстуры. Возможные значения:

  • gl.RGB
  • gl.RGBA Дополнительно, для контекстов с включённым расширением EXT_sRGB:
  • ext.SRGB_EXT
  • ext.SRGB_ALPHA_EXT Дополнительно, для контекстов WebGL2RenderingContext:
  • gl.RGBA8
  • gl.RGB8
  • gl.SRGB8
  • gl.RGB8_ALPHA8 Дополнительно, для контекстов с включённым расширением WEBGL_compressed_texture_etc:
  • ext.COMPRESSED_RGB8_ETC2
  • ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • ext.COMPRESSED_RGBA8_ETC2_EAC
  • ext.COMPRESSED_SRGB8_ETC2
  • ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC Дополнительно, для контекстов с включённым расширением WEBGL_compressed_texture_astc:
  • All из поддерживаемых форматов расширения. Значение по умолчанию gl.RGBA.
depthFormat Необязательно

Значение GLenum, определяющее тип данных глубины текстуры, или же 0 для указания, что слой не должен предоставлять текстуру глубины (в этом случае XRProjectionLayer.ignoreDepthValues будет true). Возможные значения в контекстах WebGLRenderingContext с включённым расширением WEBGL_depth_texture, или в контекстах WebGL2RenderingContext (без расширения):

  • gl.DEPTH_COMPONENT
  • gl.DEPTH_STENCIL Дополнительно, для контекстов WebGL2RenderingContext:
  • gl.DEPTH_COMPONENT24
  • gl.DEPTH24_STENCIL24 Значение по умолчанию gl.DEPTH_COMPONENT.
isStatic Необязательно

Булево значение, которое, если истинно, указывает, что отрисовка в этом слое возможна только тогда, когда needsRedraw имеет значение true. Значение по умолчанию false.

layout Необязательно

Строка, определяющая макет слоя. Возможные значения:

default

Слой поддерживает все представления сессии.

mono

Присваивается один XRSubImage и отображается для обоих глаз.

stereo

Агент пользователя определяет, как он распределяет XRSubImage (один или два) и макет (верх/низ или слева/справа).

stereo-left-right

Присваивается один XRSubImage. Левый глаз получает левую часть текстуры, правый — правую.

stereo-top-bottom

Присваивается один XRSubImage. Левый глаз получает верхнюю часть текстуры, правый — нижнюю. Значение по умолчанию mono.

lowerVerticalAngle Необязательно

Число, обозначающее нижний вертикальный угол сферы в радианах. Значение по умолчанию: -1.570795 (-π/2).

mipLevels Необязательно

Число, определяющее желаемое количество уровней MIP. Значение по умолчанию 1.

radius Необязательно

Число, обозначающее радиус сферы. Значение по умолчанию: 0 (бесконечная сфера).

space Обязательно

Объект XRSpace, определяющий пространственные отношения слоя к физической среде пользователя.

textureType Необязательно

Строка, определяющая тип текстуры слоя. Возможные значения:

texture

Текстуры XRWebGLSubImage будут типа gl.TEXTURE_2D.

texture-array

Текстуры XRWebGLSubImage будут типа gl.TEXTURE_2D_ARRAY (только контексты WebGL 2). Значение по умолчанию texture.

transform Необязательно

Объект XRRigidTransform, определяющий смещение и ориентацию относительно space.

upperVerticalAngle Необязательно

Число, обозначающее верхний вертикальный угол сферы в радианах. Значение по умолчанию: 1.570795 (π/2).

viewPixelHeight Обязательно

Число, определяющее высоту представления слоя в пикселях.

viewPixelWidth Обязательно

Число, определяющее ширину представления слоя в пикселях.

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

Объект XREquirectLayer.

Примеры

Создание слоя XREquirectLayer

Настройте слой equirect с помощью указанных выше свойств в вызове createEquirect(). Для представления слоёв устройству XR добавьте их в состояние отрисовки layers с помощью XRSession.updateRenderState().

function onXRSessionStarted(xrSession) {
  const glCanvas = document.createElement("canvas");
  const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
  const xrGlBinding = new XRWebGLBinding(xrSession, gl);
  const equirectLayer = xrGlBinding.createEquirectLayer({
    space: xrReferenceSpace,
    viewPixelWidth: 1200,
    viewPixelHeight: 600,
    centralHorizontalAngle: 2 * Math.PI,
    upperVerticalAngle: Math.PI / 2.0,
    lowerVerticalAngle: -Math.PI / 2.0,
    radius: 0,
  });

  xrSession.updateRenderState({
    layers: [equirectLayer],
  });
}

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

Спецификация
API слоёв WebXR Level 1
# dom-xrwebglbinding-createequirectlayer

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
createEquirectLayer Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет

См. также

  • XREquirectLayer
  • Постоянные значения WebGL

© 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/XRWebGLBinding/createEquirectLayer

Spec-Zone.ru

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