XRWebGLBinding: createCubeLayer() method
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The createCubeLayer() method of the XRWebGLBinding interface returns an XRCubeLayer object, which is a layer that renders directly from a cubemap, and projects it onto the inside faces of a cube.
Syntax
js
createCubeLayer(init)
Parameters
init- 
    
An object to configure the
XRCubeLayer. It must have thespace,viewPixelHeight, andviewPixelWidthproperties.inithas the following properties:colorFormatOptional- 
        
A
GLenumdefining the data type of the color texture data. Possible values:gl.RGB- 
            
gl.RGBA(Default) Additionally, for contexts with theEXT_sRGBextension enabled: ext.SRGB_EXT- 
            
ext.SRGB_ALPHA_EXTAdditionally, forWebGL2RenderingContextcontexts: gl.RGBA8gl.RGB8gl.SRGB8- 
            
gl.RGB8_ALPHA8Additionally, for contexts with theWEBGL_compressed_texture_etcextension enabled: ext.COMPRESSED_RGB8_ETC2ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_RGBA8_ETC2_EACext.COMPRESSED_SRGB8_ETC2ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2- 
            
ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EACAdditionally, for contexts with theWEBGL_compressed_texture_astcextension enabled: - All of the formats the extension supports.
 
 depthFormatOptional- 
        
A
GLenumdefining the data type of the depth texture data or0indicating that the layer should not provide a depth texture. (In that caseXRProjectionLayer.ignoreDepthValueswill betrue.) Possible values forWebGLRenderingContextcontexts with theWEBGL_depth_textureextension enabled, or forWebGL2RenderingContextcontexts (no extension required):gl.DEPTH_COMPONENT(Default)- 
            
gl.DEPTH_STENCILAdditionally, forWebGL2RenderingContextcontexts: gl.DEPTH_COMPONENT24gl.DEPTH24_STENCIL24
 isStaticOptional- 
        
A boolean that, if true, indicates you can only draw to this layer when
needsRedrawistrue. The default value isfalse. layout- 
        
A string indicating the layout of the layer. Possible values:
default: The layer accommodates all views of the session.mono: A singleXRSubImageis allocated and presented to both eyes.stereo: The user agent decides how it allocates theXRSubImage(one or two) and the layout (top/bottom or left/right).stereo-left-right: A singleXRSubImageis allocated. The left eye gets the left area of the texture, the right eye the right.- 
            
stereo-top-bottom: A singleXRSubImageis allocated. The left eye gets the top area of the texture, the right eye the bottom. The default value ismono. 
 mipLevelsOptional- 
        
A number specifying the desired number of mip levels. The default value is
1. orientationOptional- 
        
A
DOMPointReadOnlyspecifying the orientation relative to thespaceproperty. spaceRequired- 
        
An
XRSpaceobject defining the layer's spatial relationship with the user's physical environment. viewPixelHeightRequired- 
        
A number specifying the pixel height of the layer view.
 viewPixelWidthRequired- 
        
A number specifying the pixel width of the layer view.
 
 
Return value
An XRCubeLayer object.
Examples
Creating an XRCubeLayer
Configure the cube layer using the properties listed above in a call to createCubeLayer(). To present layers to the XR device, add them to the layers render state using XRSession.updateRenderState().
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],
  });
}
Specifications
| Specification | 
|---|
| WebXR Layers API Level 1  # dom-xrwebglbinding-createcubelayer  | 
Browser compatibility
BCD tables only load in the browser