XRWebGLBinding: createCubeLayer() Methode

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 createCubeLayer() Methode der XRWebGLBinding Schnittstelle gibt ein XRCubeLayer Objekt zurück, das eine Ebene darstellt, die direkt aus einer Kubenkarten rendert und sie auf den inneren Flächen eines Würfels projiziert.

Syntax

js
createCubeLayer(init)

Parameter

init

Ein Objekt zur Konfiguration des XRCubeLayer. Es muss die Eigenschaften space, viewPixelHeight und viewPixelWidth aufweisen. init hat die folgenden Eigenschaften:

colorFormat Optional

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

  • gl.RGB
  • gl.RGBA (Standard) Zusätzlich für Kontexte mit der EXT_sRGB Erweiterung aktiviert:
  • ext.SRGB_EXT
  • ext.SRGB_ALPHA_EXT Zusätzlich für WebGL2RenderingContext Kontexte:
  • gl.RGBA8
  • gl.RGB8
  • gl.SRGB8
  • gl.RGB8_ALPHA8 Zusätzlich für Kontexte mit der WEBGL_compressed_texture_etc Erweiterung aktiviert:
  • ext.COMPRESSED_RGB8_ETC2
  • ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • ext.COMPRESSED_RGBA8_ETC2_EAC
  • ext.COMPRESSED_SRGB8_ETC2
  • ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC Zusätzlich für Kontexte mit der WEBGL_compressed_texture_astc Erweiterung aktiviert:
  • Alle von der Erweiterung unterstützten Formate.
depthFormat Optional

Ein GLenum, das den Datentyp der Tiefentexturdaten oder 0 angibt, was bedeutet, dass die Ebene keine Tiefentextur bereitstellen soll. (In diesem Fall wird XRProjectionLayer.ignoreDepthValues wahr sein.) Mögliche Werte für WebGLRenderingContext Kontexte mit der WEBGL_depth_texture Erweiterung aktiviert, oder für WebGL2RenderingContext Kontexte (keine Erweiterung erforderlich):

  • gl.DEPTH_COMPONENT (Standard)
  • gl.DEPTH_STENCIL Zusätzlich für WebGL2RenderingContext Kontexte:
  • gl.DEPTH_COMPONENT24
  • gl.DEPTH24_STENCIL24
isStatic Optional

Ein boolescher Wert, der, wenn wahr, anzeigt, dass Sie nur auf diese Ebene zeichnen können, wenn needsRedraw wahr ist. Der Standardwert ist false.

layout

Ein String, der die Anordnung der Ebene angibt. Mögliche Werte:

  • default: Die Ebene nimmt alle Ansichten der Sitzung auf.
  • mono: Ein einzelnes XRSubImage wird erstellt und beiden Augen präsentiert.
  • stereo: Der User-Agent entscheidet, wie er die XRSubImage (eines oder zwei) und das Layout (oben/unten oder links/rechts) zuteilt.
  • stereo-left-right: Ein einzelnes XRSubImage wird erstellt. Das linke Auge erhält den linken Bereich der Textur, das rechte Auge den rechten.
  • stereo-top-bottom: Ein einzelnes XRSubImage wird erstellt. Das linke Auge erhält den oberen Bereich der Textur, das rechte Auge den unteren. Der Standardwert ist mono.
mipLevels Optional

Eine Zahl, die die gewünschte Anzahl an Mip-Ebenen angibt. Der Standardwert ist 1.

orientation Optional

Ein DOMPointReadOnly, der die Orientierung relativ zur space-Eigenschaft angibt.

space Erforderlich

Ein XRSpace Objekt, das die räumliche Beziehung der Ebene zur physischen Umgebung des Benutzers definiert.

viewPixelHeight Erforderlich

Eine Zahl, die die Pixelhöhe der Ebenenansicht angibt.

viewPixelWidth Erforderlich

Eine Zahl, die die Pixelbreite der Ebenenansicht angibt.

Rückgabewert

Ein XRCubeLayer Objekt.

Beispiele

Erstellen eines XRCubeLayer

Konfigurieren Sie die Kubenebene mit den oben aufgeführten Eigenschaften in einem Aufruf von createCubeLayer(). Um Ebenen auf dem XR-Gerät anzuzeigen, fügen Sie sie dem layers Renderstatus mit XRSession.updateRenderState() hinzu.

js
function onXRSessionStarted(xrSession) {
  const glCanvas = document.createElement("canvas");
  const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
  const xrGlBinding = new XRWebGLBinding(xrSession, gl);
  const cubeLayer = xrGlBinding.createCubeLayer({
    space: xrReferenceSpace,
    viewPixelHeight: 512,
    viewPixelWidth: 512,
  });
  xrSession.updateRenderState({
    layers: [cubeLayer],
  });
}

Spezifikationen

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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch