XRWebGLBinding: createCubeLayer() 方法
createCubeLayer()
是 XRWebGLBinding
接口的方法,它返回一个 XRCubeLayer
对象,该对象是一个直接从 立方体贴图 渲染的图层,并将其投影到立方体的内表面上。
语法
createCubeLayer(init)
参数
init
-
一个用于配置
XRCubeLayer
的对象。它必须具有space
、viewPixelHeight
和viewPixelWidth
属性。init
具有以下属性colorFormat
可选-
一个
GLenum
,定义颜色纹理数据的类型。可能的值gl.RGB
-
gl.RGBA
(默认)此外,对于启用了EXT_sRGB
扩展的上下文 ext.SRGB_EXT
-
ext.SRGB_ALPHA_EXT
此外,对于WebGL2RenderingContext
上下文 gl.RGBA8
gl.RGB8
gl.SRGB8
-
gl.RGB8_ALPHA8
此外,对于启用了WEBGL_compressed_texture_etc
扩展的上下文 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
此外,对于启用了WEBGL_compressed_texture_astc
扩展的上下文 - 扩展支持的所有 格式。
depthFormat
可选-
一个
GLenum
,定义深度纹理数据的类型,或0
表示图层不应提供深度纹理。(在这种情况下,XRProjectionLayer.ignoreDepthValues
将为true
。)对于启用了WEBGL_depth_texture
扩展的WebGLRenderingContext
上下文,或WebGL2RenderingContext
上下文(不需要扩展)可能的值gl.DEPTH_COMPONENT
(默认)-
gl.DEPTH_STENCIL
此外,对于WebGL2RenderingContext
上下文 gl.DEPTH_COMPONENT24
gl.DEPTH24_STENCIL24
isStatic
可选-
一个布尔值,如果为真,则表示只有当
needsRedraw
为true
时才能绘制到此图层。默认值为false
。 layout
-
一个字符串,指示图层的布局。可能的值
default
:图层适应会话的所有视图。mono
:分配单个XRSubImage
并呈现到双眼。stereo
:用户代理决定如何分配XRSubImage
(一个或两个)以及布局(顶部/底部或左侧/右侧)。stereo-left-right
:分配单个XRSubImage
。左眼获取纹理的左侧区域,右眼获取右侧区域。-
stereo-top-bottom
:分配单个XRSubImage
。左眼获取纹理的顶部区域,右眼获取底部区域。默认值为mono
。
mipLevels
可选-
一个数字,指定所需的 mip 层级数。默认值为
1
。 orientation
可选-
一个
DOMPointReadOnly
,指定相对于space
属性的方向。 space
必需-
一个
XRSpace
对象,定义图层与用户物理环境的空间关系。 viewPixelHeight
必需-
一个数字,指定图层视图的像素高度。
viewPixelWidth
必需-
一个数字,指定图层视图的像素宽度。
返回值
一个 XRCubeLayer
对象。
示例
创建 XRCubeLayer
使用上面列出的属性在 createCubeLayer()
调用中配置立方体图层。要将图层呈现到 XR 设备,请使用 XRSession.updateRenderState()
将它们添加到 layers
渲染状态。
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],
});
}
规范
规范 |
---|
WebXR 图层 API 级别 1 # dom-xrwebglbinding-createcubelayer |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。