XRWebGLLayer: framebuffer 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.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Thuộc tính chỉ đọc framebuffer của XRWebGLLayer là một WebGLFramebuffer mờ được sử dụng để đệm hình ảnh hiển thị nếu XR compositor đang được sử dụng. Ngược lại, giá trị thuộc tính này là null. Framebuffer mờ về mặt chức năng gần giống như framebuffer WebGL tiêu chuẩn, ngoại trừ các điểm khác biệt được đề cập trong phần Cách framebuffer mờ đặc biệt bên dưới.
Giá trị
Một đối tượng WebGLFramebuffer đại diện cho framebuffer mà cảnh 3D đang được hiển thị vào, hoặc null nếu XR compositor bị tắt cho phiên.
Ghi chú sử dụng
>Cách framebuffer mờ đặc biệt
Framebuffer được đại diện bởi thuộc tính framebuffer là mờ. Do đó, hành vi của nó khác nhau theo một số cách so với ngữ cảnh WebGL tiêu chuẩn. Những khác biệt này khiến framebuffer mờ hoạt động giống hơn với framebuffer WebGL mặc định:
- Framebuffer mờ có thể hỗ trợ khử răng cưa, ngay cả trong WebGL 1.0, loại thường không làm như vậy.
- Các attachment (bộ đệm và tương tự) của framebuffer mờ không thể được kiểm tra hoặc thay đổi. Gọi các hàm như
framebufferTexture2D(),framebufferRenderbuffer(),deleteFramebuffer(), hoặcgetFramebufferAttachmentParameter()trên framebuffer mờ dẫn đến lỗi WebGLINVALID_OPERATION(0x0502). - Framebuffer mờ được coi là chưa hoàn chỉnh và không có sẵn để hiển thị trừ khi đang thực thi callback của
requestAnimationFrame(). Việc cố gắng xóa, vẽ vào, hoặc đọc từ framebuffer dẫn đến lỗi WebGLINVALID_FRAMEBUFFER_OPERATION(0x0506). GọicheckFramebufferStatus()trên ngữ cảnh WebGL từ bên ngoài callback animation frame khiến lỗi WebGLFRAMEBUFFER_UNSUPPORTED(0x8CDD) được báo cáo. - Framebuffer mờ được khởi tạo với thuộc tính
depthđặt thànhfalsesẽ không có bộ đệm độ sâu và sẽ dựa vào các tọa độ để xác định khoảng cách. - Framebuffer mờ được khởi tạo mà không chỉ định thuộc tính
stencilsẽ không có bộ đệm stencil. - Framebuffer mờ sẽ không có kênh alpha trừ khi thuộc tính
alphalàtruekhi tạo lớp. - XR compositor giả định rằng framebuffer mờ sử dụng màu với alpha được nhân trước, bất kể thuộc tính ngữ cảnh
premultipliedAlphacủa ngữ cảnh WebGL có được đặt hay không.
Note:
Các thuộc tính depth và stencil không cần được hỗ trợ để trình duyệt được coi là có hỗ trợ WebGL đầy đủ.
Cấu hình mặc định của framebuffer mới
Khi tạo một XRWebGLLayer mới, framebuffer mới của nó được khởi tạo giống như framebuffer mặc định cho bất kỳ giao diện WebGL nào:
- Bộ đệm màu được cấu hình với giá trị clear được đặt thành màu (0, 0, 0, 0) (có nghĩa là màu đen trong suốt).
- Giá trị clear của bộ đệm độ sâu là số 1.0.
- Bộ đệm stencil được lấp đầy bằng 0.
Ví dụ
Ví dụ này lấy XRWebGLLayer cho một phiên và sau đó truyền framebuffer của nó vào hàm bindFramebuffer() của ngữ cảnh WebGL.
let glLayer = xrSession.renderState.baseLayer;
gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebXR Device API> # dom-xrwebgllayer-framebuffer> |