XRWebGLBinding: Methode getSubImage()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
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ßerXRProjectionLayersein, sieheXRWebGLBinding.getViewSubImage()für die Projektion von Schichten). frame-
Der
XRFrame-Frame, der für das Rendering verwendet werden soll. eyeOptional-
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
layersich nicht im Session-layerArray befindet. - wenn
layereinXRProjectionLayerist. - wenn die Eigenschaft
layoutdes Layersdefaultist. - wenn die Eigenschaft
layoutdes Layersstereoist undeyenoneist.
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
| Spezifikation |
|---|
| WebXR Layers API Level 1> # dom-xrwebglbinding-getsubimage> |