XRWebGLBinding:createCubeLayer() 方法
XRWebGLBinding 接口的 createCubeLayer() 方法返回一个 XRCubeLayer 对象,该对象是一个直接从 立方体贴图 渲染并将立方体贴图投影到立方体内面的图层。
语法
js
createCubeLayer(init)
参数
init-
一个用于配置
XRCubeLayer的对象。它必须具有space、viewPixelHeight和viewPixelWidth属性。init具有以下属性colorFormat可选-
一个
GLenum,用于定义颜色纹理数据的类型。可能的值:gl.RGBgl.RGBA(默认) 此外,对于启用了EXT_sRGB扩展的上下文ext.SRGB_EXText.SRGB_ALPHA_EXT此外,对于WebGL2RenderingContext上下文:gl.RGBA8gl.RGB8gl.SRGB8gl.RGB8_ALPHA8此外,对于启用了WEBGL_compressed_texture_etc扩展的上下文: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_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_COMPONENT24gl.DEPTH24_STENCIL24
isStatic可选-
一个布尔值,如果为 true,则表示您只能在该图层的
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 渲染状态中。
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],
});
}
规范
| 规范 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createcubelayer |
浏览器兼容性
加载中…