XRWebGLBinding: createProjectionLayer() 方法

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细检查 浏览器兼容性表格

createProjectionLayer()XRWebGLBinding 接口的方法,它返回一个 XRProjectionLayer 对象,该对象是一个填充观察者整个视野并以接近设备原生帧率刷新的图层。

语法

js
createProjectionLayer(options)

参数

options

用于配置 XRProjectionLayer 的对象。

textureType 可选

一个字符串,定义图层将具有的纹理类型。可能的值

texture

XRWebGLSubImage 的纹理将是 gl.TEXTURE_2D 类型。

texture-array

XRWebGLSubImage 的纹理将是 gl.TEXTURE_2D_ARRAY 类型(仅限 WebGL 2 上下文)。默认值为 texture

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 默认值为 gl.RGBA
depthFormat 可选

一个 GLenum,定义深度纹理数据的类型,或 0 表示图层不应提供深度纹理。(在这种情况下,XRProjectionLayer.ignoreDepthValues 将为 true。)在启用了 WEBGL_depth_texture 扩展的 WebGLRenderingContext 上下文或 WebGL2RenderingContext 上下文(不需要扩展)中可能的值

  • gl.DEPTH_COMPONENT
  • gl.DEPTH_STENCIL 此外,对于 WebGL2RenderingContext 上下文
  • gl.DEPTH_COMPONENT24
  • gl.DEPTH24_STENCIL24 默认值为 gl.DEPTH_COMPONENT
scaleFactor 可选

一个浮点值,用于在合成过程中缩放图层。值 1.0 表示帧缓冲区的默认像素大小。(另请参阅 XRWebGLLayer.getNativeFramebufferScaleFactor()。)与其他图层不同,XRProjectionLayer 不能使用显式像素宽度和高度创建,因为大小由硬件推断。(投影图层填充观察者的整个视野。)

返回值

一个 XRProjectionLayer 对象。

示例

在 WebGL 2 上下文中创建 XRProjectionLayer

textureType 选项允许分配纹理数组,其中每个 XRView 将渲染到数组的单独级别。这允许进行一些渲染优化,例如在 WebGL 2 上下文中使用 OVR_multiview2 扩展。

js
function onXRSessionStarted(xrSession) {
  const glCanvas = document.createElement("canvas");
  const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
  const xrGlBinding = new XRWebGLBinding(xrSession, gl);
  const projectionLayer = xrGlBinding.createProjectionLayer({
    textureType: "texture-array",
  });
  xrSession.updateRenderState({
    layers: [projectionLayer],
  });
}

规范

规范
WebXR 图层 API 级别 1
# dom-xrwebglbinding-createprojectionlayer

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅