XRWebGLBinding: Methode createCylinderLayer()
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 createCylinderLayer()-Methode des XRWebGLBinding-Interfaces gibt ein XRCylinderLayer-Objekt zurück, welches eine Ebene darstellt, die einen gekrümmten rechteckigen Raum in der virtuellen Umgebung einnimmt.
Syntax
createCylinderLayer(init)
Parameter
init-
Ein Objekt zur Konfiguration des
XRCylinderLayer. Es muss die Eigenschaftenspace,viewPixelHeightundviewPixelWidthenthalten.inithat die folgenden Eigenschaften:aspectRatioOptional-
Eine Zahl, die das Verhältnis des sichtbaren Zylinderabschnitts angibt. Es ist das Verhältnis der Breite des sichtbaren Abschnitts des Zylinders zu seiner Höhe. Die Breite wird berechnet, indem der
radiusmit demcentralAnglemultipliziert wird. Der Standardwert ist2.0. centralAngleOptional-
Eine Zahl, die den Winkel in Bogenmaß des sichtbaren Abschnitts des Zylinders angibt. Standardwert:
0.78539(π / 4). colorFormatOptional-
Ein
GLenum, das den Datentyp der Farbtexturdaten definiert. Mögliche Werte:gl.RGBgl.RGBAZusätzlich, für Kontexte mit der aktiviertenEXT_sRGB-Erweiterung:ext.SRGB_EXText.SRGB_ALPHA_EXTZusätzlich, fürWebGL2RenderingContext-Kontexte:gl.RGBA8gl.RGB8gl.SRGB8gl.RGB8_ALPHA8Zusätzlich, für Kontexte mit derWEBGL_compressed_texture_etc-Erweiterung:ext.COMPRESSED_RGB8_ETC2ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_RGBA8_ETC2_EACext.COMPRESSED_SRGB8_ETC2ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EACZusätzlich, für Kontexte mit derWEBGL_compressed_texture_astc-Erweiterung:Alleder vom Erweiterung unterstützten Formate. Der Standardwert istgl.RGBA.
depthFormatOptional-
Ein
GLenum, das den Datentyp der Tiefentexturdaten definiert, oder0, was darauf hinweist, dass die Ebene keine Tiefentextur bereitstellen soll (in diesem Fall istXRProjectionLayer.ignoreDepthValuestrue). Mögliche Werte innerhalb vonWebGLRenderingContext-Kontexten mit der aktiviertenWEBGL_depth_texture-Erweiterung oder innerhalb vonWebGL2RenderingContext-Kontexten (ohne die Notwendigkeit einer Erweiterung):gl.DEPTH_COMPONENTgl.DEPTH_STENCILZusätzlich, fürWebGL2RenderingContext-Kontexte:gl.DEPTH_COMPONENT24gl.DEPTH24_STENCIL24Der Standardwert istgl.DEPTH_COMPONENT.
isStaticOptional-
Ein boolescher Wert, der, falls
true, anzeigt, dass Sie nur dann auf diese Ebene zeichnen können, wennneedsRedrawtrueist. Der Standardwert istfalse. layoutOptional-
Ein String, der das Layout der Ebene angibt. Mögliche Werte:
default-
Die Ebene bietet Platz für alle Ansichten der Sitzung.
mono-
Ein einzelnes
XRSubImagewird erstellt und für beide Augen präsentiert. stereo-
Der User-Agent entscheidet, wie es das
XRSubImage(eins oder zwei) anordnet und das Layout (oben/unten oder links/rechts). stereo-left-right-
Ein einzelnes
XRSubImagewird erstellt. Das linke Auge erhält den linken Bereich der Textur, das rechte Auge den rechten. stereo-top-bottom-
Ein einzelnes
XRSubImagewird erstellt. Das linke Auge erhält den oberen Bereich der Textur, das rechte Auge den unteren. Der Standardwert istmono.
mipLevelsOptional-
Eine Zahl, die die gewünschte Anzahl der Mipmap-Level angibt. Der Standardwert ist
1. radiusOptional-
Eine Zahl, die den Radius des Zylinders angibt. Standardwert:
2.0. spaceErforderlich-
Ein
XRSpace-Objekt, das die räumliche Beziehung der Ebene zur physischen Umgebung des Nutzers definiert. textureTypeOptional-
Ein String, der den Typ der Textur definiert, die die Ebene haben wird. Mögliche Werte:
texture: Die Texturen vonXRWebGLSubImagewerden vom Typgl.TEXTURE_2Dsein.texture-array: die Texturen vonXRWebGLSubImagewerden vom Typgl.TEXTURE_2D_ARRAYsein (nur für WebGL 2-Kontexte). Der Standardwert isttexture.
transformOptional-
Ein
XRRigidTransform-Objekt, das den Versatz und die Ausrichtung relativ zuspacedefiniert. viewPixelHeightErforderlich-
Eine Zahl, die die Pixelhöhe der Ebenenansicht angibt.
viewPixelWidthErforderlich-
Eine Zahl, die die Pixelbreite der Ebenenansicht angibt.
Rückgabewert
Ein XRCylinderLayer-Objekt.
Beispiele
>Erstellen eines XRCylinderLayer
Konfigurieren Sie die Zylinder-Ebene mit den oben genannten Eigenschaften in einem Aufruf von createCylinderLayer(). Um Ebenen auf dem XR-Gerät darzustellen, fügen Sie sie dem layers-Render-State mit XRSession.updateRenderState() hinzu.
function onXRSessionStarted(xrSession) {
const glCanvas = document.createElement("canvas");
const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const cylinderLayer = xrGlBinding.createCylinderLayer({
space: xrReferenceSpace,
viewPixelWidth: 1200,
viewPixelHeight: 600,
centralAngle: (60 * Math.PI) / 180,
aspectRatio: 2,
radius: 2,
transform: new XRRigidTransform(/* … */),
});
xrSession.updateRenderState({
layers: [cylinderLayer],
});
}
Spezifikationen
| Specification |
|---|
| WebXR Layers API Level 1> # dom-xrwebglbinding-createcylinderlayer> |
Browser-Kompatibilität
Loading…