Spec-Zone.ru › Web APIs

XRWebGLBinding: метод createCylinderLayer()

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

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

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

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

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

Синтаксис

createCylinderLayer(init)

Параметры

init

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

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

Число, указывающее отношение видимой части цилиндра. Это отношение ширины видимой части цилиндра к его высоте. Ширина рассчитывается путем умножения radius на centralAngle. Значение по умолчанию: 2.0.

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

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

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.

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

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

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

Число, указывающее радиус цилиндра. Значение по умолчанию: 2.0.

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

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

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

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

  • texture: Текстуры XRWebGLSubImage будут типа gl.TEXTURE_2D.
  • texture-array: текстуры XRWebGLSubImage будут типа gl.TEXTURE_2D_ARRAY (только для контекстов WebGL 2). Значение по умолчанию: texture.
transform Необязательно

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

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

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

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

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

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

Объект XRCylinderLayer.

Примеры

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

Настройте слой цилиндра, используя перечисленные выше свойства, в вызове createCylinderLayer(). Чтобы представить слои устройству 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 cylinderLayer = xrGlBinding.createCylinderLayer({
    space: xrReferenceSpace,
    viewPixelWidth: 1200,
    viewPixelHeight: 600,
    centralAngle: (60 * Math.PI) / 180,
    aspectRatio: 2,
    radius: 2,
    transform: new XRRigidTransform(/* … */),
  });

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

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

Спецификация
API слоев WebXR уровень 1
# dom-xrwebglbinding-createcylinderlayer

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

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

См. также

  • XRCylinderLayer
  • Константы 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/createCylinderLayer

Spec-Zone.ru

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