XRWebGLBinding: Methode createProjectionLayer()
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 vor der Verwendung auf produktiven Webseiten.
Die createProjectionLayer()
Methode der XRWebGLBinding
-Schnittstelle gibt ein XRProjectionLayer
-Objekt zurück, welches eine Schicht darstellt, die die gesamte Sicht des Beobachters ausfüllt und annähernd in der nativen Bildwiederholrate des Geräts aktualisiert wird.
Syntax
createProjectionLayer(options)
Parameter
options
-
Ein Objekt zur Konfiguration des
XRProjectionLayer
.textureType
Optional-
Ein String, der den Typ der Textur definiert, den die Schicht haben wird. Mögliche Werte:
texture
-
Die Texturen von
XRWebGLSubImage
werden vom Typgl.TEXTURE_2D
sein. texture-array
-
Die Texturen von
XRWebGLSubImage
werden vom Typgl.TEXTURE_2D_ARRAY
sein (nur in WebGL 2 Kontexten). Der Standardwert isttexture
.
colorFormat
Optional-
Ein
GLenum
, das den Datentyp der Farbtexturdaten definiert. Mögliche Werte:gl.RGB
gl.RGBA
Zusätzlich für Kontexte mit aktivierterEXT_sRGB
-Erweiterung:ext.SRGB_EXT
ext.SRGB_ALPHA_EXT
Zusätzlich fürWebGL2RenderingContext
-Kontexte:gl.RGBA8
gl.RGB8
gl.SRGB8
gl.RGB8_ALPHA8
Der Standardwert istgl.RGBA
.
depthFormat
Optional-
Ein
GLenum
, das den Datentyp der Tiefentexturdaten definiert oder0
, was anzeigt, dass die Schicht keine Tiefentextur bereitstellen soll. (In diesem Fall wirdXRProjectionLayer.ignoreDepthValues
true
sein.) Mögliche Werte innerhalb vonWebGLRenderingContext
-Kontexten mit aktivierterWEBGL_depth_texture
-Erweiterung oder innerhalb vonWebGL2RenderingContext
-Kontexten (keine Erweiterung erforderlich):gl.DEPTH_COMPONENT
gl.DEPTH_STENCIL
Zusätzlich fürWebGL2RenderingContext
-Kontexte:gl.DEPTH_COMPONENT24
gl.DEPTH24_STENCIL24
Der Standardwert istgl.DEPTH_COMPONENT
.
scaleFactor
Optional-
Ein Gleitkommawert, der verwendet wird, um die Schicht während der Komposition zu skalieren. Ein Wert von
1.0
repräsentiert die Standardpixelgröße für den Framepuffer. (Siehe auchXRWebGLLayer.getNativeFramebufferScaleFactor()
.) Im Gegensatz zu anderen Schichten kann dieXRProjectionLayer
nicht mit expliziter Pixelbreite und -höhe erstellt werden, da die Größe von der Hardware abgeleitet wird. (Projektschichten füllen die gesamte Sicht des Beobachters aus.)
Rückgabewert
Ein XRProjectionLayer
-Objekt.
Beispiele
Erstellen eines XRProjectionLayer
in einem WebGL 2 Kontext
Die textureType
-Option ermöglicht es, stattdessen ein Textur-Array zuzuweisen, in dem jede XRView
in eine separate Ebene des Arrays gerendert wird. Dies ermöglicht einige Rendering-Optimierungen, wie die Verwendung der OVR_multiview2
-Erweiterung, die in WebGL 2 Kontexten verfügbar ist.
function onXRSessionStarted(xrSession) {
const glCanvas = document.createElement("canvas");
const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const projectionLayer = xrGlBinding.createProjectionLayer({
textureType: "texture-array",
});
xrSession.updateRenderState({
layers: [projectionLayer],
});
}
Spezifikationen
Specification |
---|
WebXR Layers API Level 1 # dom-xrwebglbinding-createprojectionlayer |
Browser-Kompatibilität
BCD tables only load in the browser