Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 des XRWebGLBinding-Interfaces gibt ein XRProjectionLayer-Objekt zurück, das eine Ebene darstellt, die die gesamte Sicht des Beobachters ausfüllt und nahe der nativen Bildrate des Geräts aktualisiert wird.

Syntax

js
createProjectionLayer(options)

Parameter

options

Ein Objekt zur Konfiguration des XRProjectionLayer.

textureType Optional

Ein String, der den Texturtyp der Ebene definiert. Mögliche Werte:

texture

Die Texturen von XRWebGLSubImage werden vom Typ gl.TEXTURE_2D sein.

texture-array

Die Texturen von XRWebGLSubImage werden vom Typ gl.TEXTURE_2D_ARRAY sein (nur WebGL 2-Kontexte). Der Standardwert ist texture.

colorFormat Optional

Ein GLenum, das den Datentyp der Farbtexturdaten definiert. Mögliche Werte:

  • gl.RGB
  • gl.RGBA Zusätzlich, für Kontexte mit aktivierter EXT_sRGB-Erweiterung:
  • ext.SRGB_EXT
  • ext.SRGB_ALPHA_EXT Zusätzlich, für WebGL2RenderingContext-Kontexte:
  • gl.RGBA8
  • gl.RGB8
  • gl.SRGB8
  • gl.RGB8_ALPHA8 Der Standardwert ist gl.RGBA.
depthFormat Optional

Ein GLenum, das den Datentyp der Tiefentexturdaten definiert oder 0, was anzeigt, dass die Ebene keine Tiefentextur bereitstellen soll. (In diesem Fall wird XRProjectionLayer.ignoreDepthValues true sein.) Mögliche Werte in WebGLRenderingContext-Kontexten mit aktivierter WEBGL_depth_texture-Erweiterung oder in WebGL2RenderingContext-Kontexten (keine Erweiterung erforderlich):

  • gl.DEPTH_COMPONENT
  • gl.DEPTH_STENCIL Zusätzlich, für WebGL2RenderingContext-Kontexten:
  • gl.DEPTH_COMPONENT24
  • gl.DEPTH24_STENCIL24 Der Standardwert ist gl.DEPTH_COMPONENT.
scaleFactor Optional

Ein Gleitkommawert, der verwendet wird, um die Ebene während der Komposition zu skalieren. Ein Wert von 1.0 stellt die Standard-Pixelgröße für den Framebuffer dar. (Siehe auch XRWebGLLayer.getNativeFramebufferScaleFactor().) Im Gegensatz zu anderen Ebenen kann die XRProjectionLayer nicht mit einer expliziten Pixelbreite und -höhe erstellt werden, da die Größe durch die Hardware bestimmt wird. (Projektionsebenen füllen die gesamte Sicht des Beobachters aus.)

Rückgabewert

Ein XRProjectionLayer-Objekt.

Beispiele

Erstellen einer XRProjectionLayer in einem WebGL 2-Kontext

Die textureType-Option ermöglicht stattdessen die Zuordnung eines Texturarrays, bei dem jedes XRView in eine separate Ebene des Arrays gerendert wird. Dies ermöglicht einige Renderoptimierungen, wie die Nutzung der OVR_multiview2-Erweiterung, die in WebGL 2-Kontexten verfügbar ist.

js
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

Siehe auch