EXT_float_blend - Web API 接口参考 编辑
WebGL API 的 EXT_float_blend
扩展允许使用 32 位浮点数组件来混合和绘制缓冲区。
若要查询该扩展是否存在,可以用方法:WebGLRenderingContext.getExtension()
。更多信息可以参考 WebGL tutorial 中的 Using Extensions。
可用性:该扩展在 WebGL1
和WebGL2
上下文中均存在。但是,要使用它,你需要启用对32位浮点绘制缓冲区的使用WEBGL_color_buffer_float
(for WebGL1)或 EXT_color_buffer_float
(WebGL2)。通过启用32位浮点缓冲区扩展,将自动启用EXT_float_blend
。
该组件启用后, 使用 32 位浮点数混合方式绘制,调用 drawArrays()
或 drawElements()
时,将不再产生 INVALID_OPERATION
异常。
使用说明
在支持 EXT_float_blend
扩展的设备上, 当以下几种有一种或几种扩展启用时EXT_color_buffer_float
, OES_texture_float
, 或 WEBGL_color_buffer_float
,该扩展将会自动、隐式的启用。 这确保了在该扩展定义之前的内容也都能够按照预期正确执行。
例子
const gl = canvas.getContext('webgl2');
// enable necessary extensions
gl.getExtension('EXT_color_buffer_float');
gl.getExtension('EXT_float_blend');
const tex = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, tex);
// use floating point format
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA32F, 1, 1, 0, gl.RGBA, gl.FLOAT, null);
const fb = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex, 0);
// enable blending
gl.enable(gl.BLEND);
gl.drawArrays(gl.POINTS, 0, 1);
// won't throw gl.INVALID_OPERATION with the extension enabled
规范
规范 | 状态 |
---|---|
EXT_float_blend | Draft |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on 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.其它参考
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论