EXT_float_blend-Erweiterung
Die EXT_float_blend
-Erweiterung der WebGL-API ermöglicht das Blending und Zeichnungs-Puffer mit 32-Bit-Floating-Point-Komponenten.
WebGL-Erweiterungen sind über die Methode WebGLRenderingContext.getExtension()
verfügbar. Für weitere Informationen lesen Sie bitte auch Verwendung von Erweiterungen im WebGL-Leitfaden.
Hinweis: Diese Erweiterung steht sowohl für WebGL1 als auch für WebGL2 Kontexte zur Verfügung. Um sie jedoch zu verwenden, müssen Sie die Verwendung von 32-Bit-Floating-Point-Zeichnungspuffern durch Aktivierung der Erweiterung WEBGL_color_buffer_float
(für WebGL1) oder EXT_color_buffer_float
(für WebGL2) ermöglichen. Dadurch wird EXT_float_blend
automatisch aktiviert, aber nur, wenn EXT_float_blend
ebenfalls unterstützt wird. Die Unterstützung von EXT_color_buffer_float
impliziert nicht die Unterstützung von EXT_float_blend
.
Wenn diese Erweiterung aktiviert ist, führt der Aufruf von drawArrays()
oder drawElements()
mit aktiviertem Blending und einem Zeichnungspuffer mit 32-Bit-Floating-Point-Komponenten nicht mehr zu einem INVALID_OPERATION
-Fehler.
Hinweise zur Verwendung
Auf Geräten, die die EXT_float_blend
-Erweiterung unterstützen, wird sie automatisch und implizit aktiviert, wenn eine oder mehrere der Erweiterungen EXT_color_buffer_float
, OES_texture_float
oder WEBGL_color_buffer_float
aktiviert sind. Dies gewährleistet, dass Inhalte, die vor der Einführung von EXT_float_blend
durch WebGL erstellt wurden, wie erwartet funktionieren.
Beispiele
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
Spezifikationen
Specification |
---|
WebGL EXT_float_blend Extension Specification |
Browser-Kompatibilität
BCD tables only load in the browser