XRWebGLBinding: getViewSubImage() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

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

getViewSubImage() 方法是 XRWebGLBinding 接口的一个方法,它返回一个 XRWebGLSubImage 对象,该对象代表用于渲染的 WebGL 纹理。

语法

js
getViewSubImage(layer, view)

参数

layer

用于渲染的 XRProjectionLayer(要渲染其他图层类型,请参阅 XRWebGLBinding.getSubImage())。

view

用于渲染的 XRView

返回值

一个 XRWebGLSubImage 对象。

异常

会抛出一个 TypeError

示例

渲染 XRProjectionLayer

下面的示例将一个 XRProjectionLayer 渲染到视图中。

js
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const layer = xrGlBinding.createProjectionLayer({});
const framebuffer = gl.createFramebuffer();

xrSession.updateRenderState({ layers: [layer] });
xrSession.requestAnimationFrame(onXRFrame);

function onXRFrame(time, xrFrame) {
  xrSession.requestAnimationFrame(onXRFrame);

  gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);

  for (const view in xrViewerPose.views) {
    const subImage = xrGlBinding.getViewSubImage(layer, view);
    gl.framebufferTexture2D(
      gl.FRAMEBUFFER,
      gl.COLOR_ATTACHMENT0,
      gl.TEXTURE_2D,
      subImage.colorTexture,
      0,
    );
    gl.framebufferTexture2D(
      gl.FRAMEBUFFER,
      gl.DEPTH_ATTACHMENT,
      gl.TEXTURE_2D,
      subImage.depthStencilTexture,
      0,
    );
    const viewport = subImage.viewport;
    gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);

    // Render from the viewpoint of xrView
  }
}

规范

规范
WebXR Layers API Level 1
# dom-xrwebglbinding-getviewsubimage

浏览器兼容性

另见