安全上下文
此特征只可用于 安全上下文 (HTTPS),在某些或所有 支持浏览器 .

只读 XRWebGLLayer property framebuffer is an opaque WebGLFramebuffer which is used to buffer the rendered image if the XR compositor is being used. Otherwise, this property's value is null . The opaque framebuffer is functionally nearly the same as a standard WebGL framebuffer, except for the differences covered in the section How opaque framebuffers are special 下文。

句法

let framebuffer = xrWebGLLayer.framebuffer;
					

A WebGLFramebuffer object representing the framebuffer into which the 3D scene is being rendered, or null XR compositor is disabled for the session.

用法注意事项

How opaque framebuffers are special

The framebuffer represented by the framebuffer property is opaque. As such, its behavior is different in several ways from a standard WebGL context. These differences cause the opaque framebuffer to behave more like the default WebGL framebuffer:

  • Opaque framebuffers may support 抗锯齿 , even under WebGL 1.0, which don't normally do so.
  • Opaque framebuffers' attachments (buffers and the like) can't be inspected or changed. Calling functions such as framebufferTexture2D() , framebufferRenderbuffer() , deleteFramebuffer() ,或 getFramebufferAttachmentParameter() on an opaque framebuffer results in the WebGL error INVALID_OPERATION (0x0502).
  • Opaque framebuffers are considered incomplete and are not available for rendering other than while executing the requestAnimationFrame() callback. Attempting to clear, draw to, or read from the framebuffer results in a WebGL INVALID_FRAMEBUFFER_OPERATION error (0x0506). Calling checkFramebufferStatus() on the WebGL context from outside the animation frame callback causes the WebGL FRAMEBUFFER_UNSUPPORTED error (0x8CDD) to be reported.
  • Opaque framebuffers initialized with the depth 特性被设为 false will not have a depth buffer and will rely on the coordinates alone to determine distance.
  • Opaque framebuffers initialized without specifying a stencil will not have a stencil buffer.
  • Opaque framebuffers will not have an alpha channel available unless the alpha 特性为 true when creating the layer.
  • The XR compositor assumes that opaque framebuffers use colors with premultiplied allpha, regardless of whether or not the WebGL context's premultipliedAlpha context attribute is set.

注意: depth and stencil properties are not required to be supported in order for a browser to be construed as having full WebGL support.

The default configuration of a new framebuffer

Upon creating a new XRWebGLLayer , its new framebuffer is initialized just like the default framebuffer for any WebGL interface:

  • The color buffer is configured with its clear value set to the color (0, 0, 0, 0) (meaning transparent black).
  • The depth buffer's clear value is the number 1.0.
  • The stencil buffer is filled with 0.

范例

This example gets the XRWebGLLayer for a session and then passes its framebuffer into the WebGL context's bindFramebuffer() 函数。

let glLayer = xrSession.renderState.baselayer;
gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
					

规范

规范 状态 注释
WebXR 设备 API
The definition of 'XRWebGLLayer.framebuffer' in that specification.
工作草案 初始定义。

浏览器兼容性

The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
framebuffer Chrome 79 Edge 79 Firefox No IE No Opera No Safari No WebView Android No Chrome Android 79 Firefox Android No Opera Android No Safari iOS No Samsung Internet Android 11.2

图例

完整支持

完整支持

不支持

不支持

另请参阅

元数据

  • 最后修改: