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

js
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

Siehe auch