XRWebGLBinding: phương thức getSubImage()

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.

Phương thức getSubImage() của giao diện XRWebGLBinding trả về đối tượng XRWebGLSubImage đại diện cho kết cấu WebGL cần kết xuất.

Cú pháp

js
getSubImage(layer, frame)
getSubImage(layer, frame, eye)

Tham số

layer

XRCompositionLayer để sử dụng cho kết xuất (có thể là tất cả các loại đối tượng XRCompositionLayer ngoại trừ XRProjectionLayer, xem XRWebGLBinding.getViewSubImage() để kết xuất lớp chiếu).

frame

Khung XRFrame để sử dụng cho kết xuất.

eye Optional

XRView.eye tùy chọn cho biết mắt của khung nhìn nào cần sử dụng để kết xuất. Các giá trị có thể:

left

XRView đại diện cho điểm nhìn của mắt trái của người xem.

Khung nhìn đại diện cho mắt phải của người xem.

none

Khung nhìn mô tả chế độ nhìn đơn sắc, hoặc khung nhìn không đại diện cho điểm nhìn của mắt cụ thể nào. Mặc định là none.

Giá trị trả về

Đối tượng XRWebGLSubImage.

Ngoại lệ

TypeError được ném ra,

Ví dụ

Kết xuất một XRQuadLayer

Ví dụ sau kết xuất một XRQuadLayer.

js
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const quadLayer = xrGlBinding.createQuadLayer({
  space: xrReferenceSpace,
  viewPixelWidth: 512,
  viewPixelHeight: 512,
});

// Đặt cách gốc 2 mét với chiều rộng và chiều cao 1.5 mét
quadLayer.transform = new XRRigidTransform({ z: -2 });
quadLayer.width = 1.5;
quadLayer.height = 1.5;

const framebuffer = gl.createFramebuffer();
xrSession.updateRenderState({ layers: [quadLayer] });
xrSession.requestAnimationFrame(onXRFrame);

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

  gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
  let subImage = xrGlBinding.getSubImage(quadLayer, xrFrame);
  gl.framebufferTexture2D(
    gl.FRAMEBUFFER,
    gl.COLOR_ATTACHMENT0,
    subImage.colorTexture,
    0,
  );
  let viewport = subImage.viewport;
  gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);

  // Kết xuất nội dung cho lớp quad
}

Thông số kỹ thuật

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

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

Xem thêm