Spec-Zone.ru › Web APIs

XRWebGLBinding: метод getSubImage()

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

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

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

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

Метод getSubImage() интерфейса XRWebGLBinding возвращает объект XRWebGLSubImage, представляющий текстуру WebGL для рендеринга.

Синтаксис

getSubImage(layer, frame)
getSubImage(layer, frame, eye)

Параметры

layer

Используемый XRCompositionLayer для рендеринга (могут быть все типы XRCompositionLayer объектов, кроме XRProjectionLayer, см. XRWebGLBinding.getViewSubImage() для рендеринга проекционных слоёв).

frame

Кадр XRFrame для использования при рендеринге.

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

Необязательный XRView.eye, указывающий, глаз какого вида использовать для рендеринга. Возможные значения:

left

XRView представляет точку зрения левого глаза зрителя.

right

Вид представляет правый глаз зрителя.

none

Вид описывает моноскопический вид, или вид иначе не представляет точку зрения конкретного глаза. По умолчанию none.

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

Объект 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
}

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

Спецификация
WebXR Layers API Level 1
# dom-xrwebglbinding-getsubimage

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

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
getSubImage Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет

См. также

  • XRWebGLSubImage

© 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

Spec-Zone.ru

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