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.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.
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],
});
}
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createCylinderLayer |
Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
© 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