Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die Erweiterung EXT_float_blend der WebGL-API ermöglicht Blending mit Draw-Buffern, deren Komponenten 32-Bit-Gleitkommazahlen sind.

WebGL-Erweiterungen sind über die Methode WebGLRenderingContext.getExtension() verfügbar. Weitere Informationen finden Sie unter WebGL-Erweiterungen verwenden.

Hinweis: Diese Erweiterung ist sowohl für WebGL1- als auch für WebGL2-Kontexte verfügbar. Um sie zu verwenden, müssen Sie jedoch Draw-Buffer mit 32-Bit-Gleitkommakomponenten aktivieren: über die Erweiterung WEBGL_color_buffer_float (für WebGL1) oder EXT_color_buffer_float (für WebGL2). Dadurch wird auch EXT_float_blend automatisch aktiviert, sofern EXT_float_blend unterstützt wird. Die Unterstützung von EXT_color_buffer_float bedeutet nicht, dass auch EXT_float_blend unterstützt wird.

Wenn diese Erweiterung aktiviert ist, führt der Aufruf von drawArrays() oder drawElements() bei aktiviertem Blending und einem Draw-Buffer mit 32-Bit-Gleitkommakomponenten nicht mehr zu einem INVALID_OPERATION-Fehler.

Hinweise zur Verwendung

Auf Geräten, die die Erweiterung EXT_float_blend unterstützen, wird sie automatisch und implizit aktiviert, sobald mindestens eine der Erweiterungen EXT_color_buffer_float, OES_texture_float oder WEBGL_color_buffer_float aktiviert wird. Dadurch funktionieren Inhalte, die geschrieben wurden, bevor EXT_float_blend in WebGL verfügbar war, weiterhin wie erwartet.

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

Spezifikation
WebGL EXT_float_blend Extension Specification

Browser-Kompatibilität

Siehe auch