XRWebGLBinding: метод getSubImage()
Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости браузеров.
Метод getSubImage() интерфейса XRWebGLBinding возвращает объект XRWebGLSubImage, представляющий текстуру WebGL для рендеринга.
Синтаксис
getSubImage(layer, frame) getSubImage(layer, frame, eye)
Параметры
layer-
Используемый
XRCompositionLayerдля рендеринга (могут быть все типыXRCompositionLayerобъектов, кромеXRProjectionLayer, см.XRWebGLBinding.getViewSubImage()для рендеринга проекционных слоёв). frame-
Кадр
XRFrameдля использования при рендеринге. eyeНеобязательно-
Необязательный
XRView.eye, указывающий, глаз какого вида использовать для рендеринга. Возможные значения:
Возвращаемое значение
Объект XRWebGLSubImage.
Исключения
Бросается исключение TypeError,
- если
layerне находится в массивеlayerсессии. - если
layerявляетсяXRProjectionLayer. - если свойство
layoutслоя равноdefault. - если свойство
layoutслоя равноstereoиeyeравноnone.
Примеры
Рендеринг XRQuadLayer
Следующий пример рендерит XRQuadLayer.
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const quadLayer = xrGlBinding.createQuadLayer({
space: xrReferenceSpace,
viewPixelWidth: 512,
viewPixelHeight: 512,
});
// Position 2 meters away from the origin with a width and height of 1.5 meters
quadLayer.transform = new XRRigidTransform({ z: -2 });
quadLayer.width = 1.5;
quadLayer.height = 1.5;
const framebuffer = gl.createFramebuffer();
xrSession.updateRenderState({ layers: [quadLayer] });
xrSession.requestAnimationFrame(onXRFrame);
function onXRFrame(time, xrFrame) {
xrSession.requestAnimationFrame(onXRFrame);
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
let subImage = xrGlBinding.getSubImage(quadLayer, xrFrame);
gl.framebufferTexture2D(
gl.FRAMEBUFFER,
gl.COLOR_ATTACHMENT0,
subImage.colorTexture,
0,
);
let viewport = subImage.viewport;
gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
// Render content for the quad layer
}
Спецификации
Совместимость браузеров
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
getSubImage |
Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
© 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/getSubImage