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.RGBA8gl.RGB8gl.SRGB8-
gl.RGB8_ALPHA8Дополнительно, для контекстов с включённым расширениемWEBGL_compressed_texture_etc: ext.COMPRESSED_RGB8_ETC2ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_RGBA8_ETC2_EACext.COMPRESSED_SRGB8_ETC2ext.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],
});
}
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createEquirectLayer |
Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
© 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