EXT_float_blend-Erweiterung

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
EXT_float_blend

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
See implementation notes.

Siehe auch