EXT_float_blend-Erweiterung
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
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
| Spezifikation |
|---|
| WebGL EXT_float_blend Extension Specification> |