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
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
Loading…