XRWebGLBinding: Methode getSubImage()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Die getSubImage() Methode des XRWebGLBinding-Interfaces gibt ein XRWebGLSubImage-Objekt zurück, das die zu rendernde WebGL-Textur darstellt.

Syntax

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

Parameter

layer

Der XRCompositionLayer, der für das Rendering verwendet werden soll (kann alle Arten von XRCompositionLayer-Objekten außer XRProjectionLayer sein, siehe XRWebGLBinding.getViewSubImage() für die Projektion von Schichten).

frame

Der XRFrame-Frame, der für das Rendering verwendet werden soll.

eye Optional

Ein optionales XRView.eye, das angibt, welches Auge der Ansicht für das Rendering verwendet werden soll. Mögliche Werte:

left

Die XRView repräsentiert die Perspektive des linken Auges des Betrachters.

Die Ansicht repräsentiert das rechte Auge des Betrachters.

none

Die Ansicht beschreibt eine monokulare Ansicht oder repräsentiert anderweitig nicht die Perspektive eines bestimmten Auges. Standardwert ist none.

Rückgabewert

Ein XRWebGLSubImage-Objekt.

Ausnahmen

Ein TypeError wird ausgelöst,

Beispiele

Rendern eines XRQuadLayer

Das folgende Beispiel rendert einen XRQuadLayer.

js
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
}

Spezifikationen

Specification
WebXR Layers API Level 1
# dom-xrwebglbinding-getsubimage

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch