XRWebGLSubImage: depthStencilTexture property

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Thuộc tính chỉ đọc depthStencilTexture của giao diện XRWebGLSubImage đại diện cho đối tượng WebGLTexture độ sâu/stencil cho XRCompositionLayer để kết xuất.

Giá trị

Một WebGLTexture mờ đục. Xem WebXR opaque textures để biết chi tiết.

Sử dụng depthStencilTexture

Thuộc tính depthStencilTexture có thể được truyền vào WebGL2RenderingContext.framebufferTextureLayer() để gắn texture độ sâu vào một framebuffer.

js
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const layer = xrGlBinding.createProjectionLayer({
  textureType: "texture-array",
});
const framebuffer = gl.createFramebuffer();

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

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

  gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
  const viewport = xrGlBinding.getSubImage(layer, xrFrame).viewport;
  gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);

  for (const view in xrViewerPose.views) {
    const subImage = xrGlBinding.getViewSubImage(layer, view);
    gl.framebufferTextureLayer(
      gl.FRAMEBUFFER,
      gl.COLOR_ATTACHMENT0,
      subImage.colorTexture,
      0,
      subImage.imageIndex,
    );
    gl.framebufferTextureLayer(
      gl.FRAMEBUFFER,
      gl.DEPTH_ATTACHMENT,
      subImage.depthStencilTexture,
      0,
      subImage.imageIndex,
    );

    // Render from the viewpoint of xrView
  }
}

Thông số kỹ thuật

Thông số kỹ thuật
WebXR Layers API Level 1
# dom-xrwebglsubimage-depthstenciltexture

Tương thích trình duyệt

Xem thêm