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
getSubImage(layer, frame)
getSubImage(layer, frame, eye)
Parameter
layer
-
Der
XRCompositionLayer
, der für das Rendering verwendet werden soll (kann alle Arten vonXRCompositionLayer
-Objekten außerXRProjectionLayer
sein, sieheXRWebGLBinding.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:
Rückgabewert
Ein XRWebGLSubImage
-Objekt.
Ausnahmen
Ein TypeError
wird ausgelöst,
- wenn
layer
sich nicht im Session-layer
Array befindet. - wenn
layer
einXRProjectionLayer
ist. - wenn die Eigenschaft
layout
des Layersdefault
ist. - wenn die Eigenschaft
layout
des Layersstereo
ist undeye
none
ist.
Beispiele
Rendern eines XRQuadLayer
Das folgende Beispiel rendert einen 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
}
Spezifikationen
Specification |
---|
WebXR Layers API Level 1 # dom-xrwebglbinding-getsubimage |
Browser-Kompatibilität
BCD tables only load in the browser