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

瀏覽器相容性

另見