--- title: EXT_float_blend slug: Web/API/EXT_float_blend tags: - API - WebGL - 参考 - 浮点 translation_of: Web/API/EXT_float_blend ---
WebGL API 的 EXT_float_blend
扩展允许使用 32 位浮点数组件来混合和绘制缓冲区。
若要查询该扩展是否存在,可以用方法:{{domxref("WebGLRenderingContext.getExtension()")}}。更多信息可以参考 WebGL tutorial 中的 Using Extensions。
可用性:该扩展在 {{domxref("WebGLRenderingContext", "WebGL1")}} 和{{domxref("WebGL2RenderingContext", "WebGL2")}} 上下文中均存在。但是,要使用它,你需要启用对32位浮点绘制缓冲区的使用{{domxref("WEBGL_color_buffer_float")}}(for WebGL1)或 {{domxref("EXT_color_buffer_float")}}(WebGL2)。通过启用32位浮点缓冲区扩展,将自动启用EXT_float_blend
。
该组件启用后, 使用 32 位浮点数混合方式绘制,调用 {{domxref("WebGLRenderingContext.drawArrays", "drawArrays()")}} 或 {{domxref("WebGLRenderingContext.drawElements", "drawElements()")}} 时,将不再产生 INVALID_OPERATION
异常。
在支持 EXT_float_blend
扩展的设备上, 当以下几种有一种或几种扩展启用时{{domxref("EXT_color_buffer_float")}}, {{domxref("OES_texture_float")}}, 或 {{domxref("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 |
{{Compat("api.EXT_float_blend")}}