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

Limited availability

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 createProjectionLayer() của giao diện XRWebGLBinding trả về đối tượng XRProjectionLayer, là một lớp lấp đầy toàn bộ tầm nhìn của người quan sát và được làm mới gần với tốc độ khung gốc của thiết bị.

Cú pháp

js
createProjectionLayer(options)

Tham số

options

Đối tượng để cấu hình XRProjectionLayer.

textureType Optional

Chuỗi xác định loại kết cấu mà lớp sẽ có. Các giá trị có thể:

texture

Các kết cấu của XRWebGLSubImage sẽ có kiểu gl.TEXTURE_2D.

texture-array

Các kết cấu của XRWebGLSubImage sẽ có kiểu gl.TEXTURE_2D_ARRAY (chỉ dành cho ngữ cảnh WebGL 2). Giá trị mặc định là texture.

colorFormat Optional

GLenum xác định kiểu dữ liệu của dữ liệu kết cấu màu. Các giá trị có thể:

  • gl.RGB
  • gl.RGBA Ngoài ra, cho các ngữ cảnh với phần mở rộng EXT_sRGB được kích hoạt:
  • ext.SRGB_EXT
  • ext.SRGB_ALPHA_EXT Ngoài ra, cho các ngữ cảnh WebGL2RenderingContext:
  • gl.RGBA8
  • gl.RGB8
  • gl.SRGB8
  • gl.RGB8_ALPHA8 Giá trị mặc định là gl.RGBA.
depthFormat Optional

GLenum xác định kiểu dữ liệu của dữ liệu kết cấu độ sâu hoặc 0 cho biết lớp không nên cung cấp kết cấu độ sâu. (Trong trường hợp đó XRProjectionLayer.ignoreDepthValues sẽ là true.) Các giá trị có thể trong các ngữ cảnh WebGLRenderingContext có phần mở rộng WEBGL_depth_texture được kích hoạt, hoặc trong các ngữ cảnh WebGL2RenderingContext (không cần phần mở rộng):

  • gl.DEPTH_COMPONENT
  • gl.DEPTH_STENCIL Ngoài ra, cho các ngữ cảnh WebGL2RenderingContext:
  • gl.DEPTH_COMPONENT24
  • gl.DEPTH24_STENCIL24 Giá trị mặc định là gl.DEPTH_COMPONENT.
scaleFactor Optional

Giá trị dấu phẩy động được sử dụng để chia tỷ lệ lớp trong quá trình ghép hình. Giá trị 1.0 đại diện cho kích thước pixel mặc định của bộ đệm khung. (Xem thêm XRWebGLLayer.getNativeFramebufferScaleFactor().) Không giống các lớp khác, XRProjectionLayer không thể được tạo với chiều rộng và chiều cao pixel rõ ràng, vì kích thước được suy ra bởi phần cứng. (Các lớp chiếu lấp đầy toàn bộ tầm nhìn của người quan sát.)

Giá trị trả về

Đối tượng XRProjectionLayer.

Ví dụ

Tạo một XRProjectionLayer trong ngữ cảnh WebGL 2

Tùy chọn textureType cho phép phân bổ một mảng kết cấu thay thế, trong đó mỗi XRView sẽ được kết xuất vào một cấp riêng biệt của mảng. Điều này cho phép một số tối ưu hóa kết xuất, chẳng hạn như việc sử dụng phần mở rộng OVR_multiview2 có sẵn trong các ngữ cảnh WebGL 2.

js
function onXRSessionStarted(xrSession) {
  const glCanvas = document.createElement("canvas");
  const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
  const xrGlBinding = new XRWebGLBinding(xrSession, gl);
  const projectionLayer = xrGlBinding.createProjectionLayer({
    textureType: "texture-array",
  });
  xrSession.updateRenderState({
    layers: [projectionLayer],
  });
}

Thông số kỹ thuật

Specification
WebXR Layers API Level 1
# dom-xrwebglbinding-createprojectionlayer

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

Xem thêm