XRWebGLBinding:createEquirectLayer() 方法
createEquirectLayer() 方法是 XRWebGLBinding 接口的一部分,它返回一个 XREquirectLayer 对象。该对象是一个图层,用于将 等距柱状投影 编码的数据映射到球体的内部。
语法
createEquirectLayer(options)
参数
options-
一个用于配置
XREquirectLayer的对象。它必须包含space、viewPixelHeight和viewPixelWidth属性。init具有以下属性:centralHorizontalAngle可选-
一个数字,表示球体的中心水平角度(以弧度为单位)。默认值为
6.28318(2π)。 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扩展的上下文:- 扩展支持的 *所有* 格式。默认值为
gl.RGBA。
depthFormat可选-
一个
GLenum,用于定义深度纹理数据的类型,或者0表示该图层不应提供深度纹理(在这种情况下,XRProjectionLayer.ignoreDepthValues将为true)。在启用了WEBGL_depth_texture扩展的WebGLRenderingContext上下文中,或在WebGL2RenderingContext上下文中(无需扩展)可能的值:gl.DEPTH_COMPONENTgl.DEPTH_STENCIL此外,对于WebGL2RenderingContext上下文:gl.DEPTH_COMPONENT24gl.DEPTH24_STENCIL24默认值为gl.DEPTH_COMPONENT。
isStatic可选-
一个布尔值,如果为 true,则表示您只能在该图层的
needsRedraw为true时进行绘制。默认值为false。 layout可选-
一个字符串,指示图层的布局。可能的值:
default-
该图层支持会话的所有视图。
mono-
分配一个
XRSubImage对象,并将其呈现给双眼。 stereo-
用户代理决定如何分配
XRSubImage(一个或两个)以及布局(上下或左右)。 stereo-left-right-
分配一个
XRSubImage对象。左眼使用纹理的左侧区域,右眼使用右侧区域。 stereo-top-bottom-
分配一个
XRSubImage对象。左眼使用纹理的上侧区域,右眼使用下侧区域。默认值为mono。
lowerVerticalAngle可选-
一个数字,表示球体的较低垂直角度(以弧度为单位)。默认值为
-1.570795(-π/2)。 mipLevels可选-
一个数字,指定所需的 mip 级别数量。默认值为
1。 radius可选-
一个数字,表示球体的半径。默认值为
0(无限球体)。 space必需-
一个
XRSpace对象,定义了图层与用户物理环境的空间关系。 textureType可选-
一个字符串,定义了图层的纹理类型。可能的值:
texture-
XRWebGLSubImage的纹理类型为gl.TEXTURE_2D。 texture-array-
XRWebGLSubImage的纹理类型为gl.TEXTURE_2D_ARRAY(仅限 WebGL 2 上下文)。默认值为texture。
transform可选-
一个
XRRigidTransform对象,定义了相对于space的偏移和方向。 upperVerticalAngle可选-
一个数字,表示球体的较高垂直角度(以弧度为单位)。默认值为
1.570795(π/2)。 viewPixelHeight必需-
一个数字,指定图层视图的像素高度。
viewPixelWidth必需-
一个数字,指定图层视图的像素宽度。
返回值
一个 XREquirectLayer 对象。
示例
创建 XREquirectLayer
使用上面列出的属性配置等距柱状图层,并在调用 createEquirect() 时传入。要将图层呈现给 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 equirectLayer = xrGlBinding.createEquirectLayer({
space: xrReferenceSpace,
viewPixelWidth: 1200,
viewPixelHeight: 600,
centralHorizontalAngle: 2 * Math.PI,
upperVerticalAngle: Math.PI / 2.0,
lowerVerticalAngle: -Math.PI / 2.0,
radius: 0,
});
xrSession.updateRenderState({
layers: [equirectLayer],
});
}
规范
| 规范 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createequirectlayer |
浏览器兼容性
加载中…