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 图层 API 级别 1
# dom-xrwebglbinding-getviewsubimage

浏览器兼容性

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

另请参阅