Расширение EXT_float_blend
Ограниченная доступность
Эта функция не относится к Базовым, поскольку она не работает в некоторых из наиболее широко используемых браузеров.
Расширение API WebGL EXT_float_blend позволяет смешивать и отображать буферы с 32-битными компонентами с плавающей точкой.
Расширения WebGL доступны с помощью метода WebGLRenderingContext.getExtension(). Дополнительную информацию см. также в разделе Использование расширений в учебнике по WebGL.
Примечание: Это расширение доступно для контекстов WebGL1 и WebGL2. Однако для его использования необходимо включить использование 32-битных буферов отображения с плавающей точкой, включив расширение WEBGL_color_buffer_float (для WebGL1) или EXT_color_buffer_float (для WebGL2). Это автоматически включает EXT_float_blend, если и только если EXT_float_blend также поддерживается. Поддержка EXT_color_buffer_float не подразумевает поддержку EXT_float_blend.
После включения этого расширения вызов drawArrays() или drawElements() с включённым смешиванием и буфером отображения с 32-битными компонентами с плавающей точкой больше не приведет к ошибке INVALID_OPERATION.
Примечания по использованию
На устройствах, поддерживающих расширение EXT_float_blend , оно автоматически и неявно включается при включении одного или нескольких расширений EXT_color_buffer_float, OES_texture_float или WEBGL_color_buffer_float. Это гарантирует, что содержимое, написанное до того, как EXT_float_blend было представлено WebGL, будет работать как ожидалось.
Примеры
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
Спецификации
| Спецификация |
|---|
| Спецификация расширения WebGL EXT_float_blend |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
EXT_float_blend |
75 | 79 | 67 | 64 | 14.1 | 75До Chrome 77 это расширение было недоступно на некоторых устройствах Android с GLES 3.2. См. ошибку 41459397. |
67 | 54 | 15–16 | 11.0 | 75 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend