Utilizar extensões de WebGL

Esta tradução está em curso.

WebGL, like its sister APIs (OpenGL and OpenGL ES), supports extensions. A complete list of extensions is available in the khronos webgl extension registry.

Nota: In WebGL, unlike in other GL APIs, extensions are only available if explicitly requested.

Nomes de extensão canónica, prefixos e preferências da empresa

Extensions may be supported by browser vendors before being officially ratified (but only when they are in draft stage). In that case, their name can be prefixed by the vendor prefix (MOZ_, WEBKIT_, etc.) or the extension is only available once a browser preference has been toggled.

If you wish to work with the bleeding edge of extensions, and want to keep working on upon ratification (assuming, of course, that the extension doesn't change in incompatible ways), that you query the canonical extension name as well as the vendor extension name. For instance:

var ext = (
  gl.getExtension('OES_vertex_array_object') ||
  gl.getExtension('MOZ_OES_vertex_array_object') ||
  gl.getExtension('WEBKIT_OES_vertex_array_object')
);

Note that, vendor prefix have been discouraged more and more and thus most browser implement experimental extensions behind a feature flag rather than vendor prefix.

The feature flags are:

  • webgl.enable-draft-extensions in Firefox
  • chrome://flags/#enable-webgl-draft-extensions in Chromium based browsers (Chrome, Opera).

Convenções de nomeação

WebGL extensions are prefixed with "ANGLE", "OES", "EXT" or "WEBGL". These prefixes reflect origin and intent:

  • ANGLE_: Extensions that are written by the ANGLE library authors.
  • OES_: Extensions that mirror functionality from OpenGL ES or OpenGL API extensions approved by the respective architecture review boards.
  • EXT_: Extensions that mirror other OpenGL ES or OpenGL API extensions.
  • WEBGL_: Extensions that are WebGL-specific and intended to be compatible with multiple web browsers. It should also be used for extensions which originated with the OpenGL ES or OpenGL APIs, but whose behavior has been significantly altered.

Extensões de consulta disponíveis

O contexto de WebGL suporta a consulta de quais as extensões que estão disponíveis.

var available_extensions = gl.getSupportedExtensions();

The WebGLRenderingContext.getSupportedExtensions() method returns an array of strings, one for each supported extension.

Lista de extensões

As extensões atuais são:

Ativar uma extensão

Before an extension can be used it has to be enabled using WebGLRenderingContext.getExtension(). For example:

var float_texture_ext = gl.getExtension('OES_texture_float');

The return value is null if the extension is not supported, or an extension object otherwise.

Objetos de extensão

If an extension defines specific symbols or functions that are not available in the core specification of WebGL, they will be available on the extension object returned by the call to gl.getExtension().

Compatibilidade de navegador

Funcionalidade Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 9 4.0 (2.0) 11 12 5.1
ANGLE_instanced_arrays ? 33.0 (33.0) ? ? ?
EXT_blend_minmax ? 33.0 (33.0) ? ? ?
EXT_color_buffer_float ? 49.0 (49.0) ? ? ?
EXT_color_buffer_half_float ? 30.0 (30.0) ? ? ?
EXT_disjoint_timer_query ? 41.0 (41.0) [1] ? ? ?
EXT_frag_depth ? 30.0 (30.0) ? ? ?
EXT_sRGB ? 28.0 (28.0) ? ? ?
EXT_shader_texture_lod ? 50.0 (50.0) ? ? ?
EXT_texture_filter_anisotropic ? 17.0 (17.0) [2] ? ? ?
OES_element_index_uint ? 24.0 (24.0) ? ? ?
OES_standard_derivatives ? 10.0 (10.0) ? ? ?
OES_texture_float ? 6.0 (6.0) ? ? ?
OES_texture_float_linear ? 24.0 (24.0) ? ? ?
OES_texture_half_float ? 29.0 (29.0) ? ? ?
OES_texture_half_float_linear ? 30.0 (30.0) ? ? ?
OES_vertex_array_object ? 25.0 (25.0) ? ? ?
WEBGL_color_buffer_float ? 30.0 (30.0) ? ? ?
WEBGL_compressed_texture_astc ? 53.0 (53.0) ? ? ?
WEBGL_compressed_texture_atc ? 18.0 (18.0) ? ? ?
WEBGL_compressed_texture_etc ? 51.0 (51.0) ? ? ?
WEBGL_compressed_texture_etc1 ? 30.0 (30.0) ? ? ?
WEBGL_compressed_texture_pvrtc ? 18.0 (18.0) ? ? ?
WEBGL_compressed_texture_s3tc ? 22.0 (22.0) [2] ? ? ?
WEBGL_compressed_texture_s3tc_srgb ? 55.0 (55.0) ? ? ?
WEBGL_debug_renderer_info ? 19.0 (19.0) ? ? ?
WEBGL_debug_shaders ? 30.0 (30.0) ? ? ?
WEBGL_depth_texture ? 22.0 (22.0) [2] ? ? ?
WEBGL_draw_buffers ? 28.0 (28.0) ? ? ?
WEBGL_lose_context ? 22.0 (22.0) [2] ? ? ?
Funcionalidades Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) 25 4.0 (2.0) (Yes) 12 8.0
ANGLE_instanced_arrays ? ? ? ? ? ?
EXT_blend_minmax ? ? ? ? ? ?
EXT_color_buffer_float ? ? ? ? ? ?
EXT_color_buffer_half_float ? ? ? ? ? ?
EXT_disjoint_timer_query ? ? ? ? ? ?
EXT_frag_depth ? ? ? ? ? ?
EXT_sRGB ? ? ? ? ? ?
EXT_shader_texture_lod ? ? ? ? ? ?
EXT_texture_filter_anisotropic ? ? ? ? ? ?
OES_element_index_uint ? ? ? ? ? ?
OES_standard_derivatives ? ? ? ? ? ?
OES_texture_float ? ? ? ? ? ?
OES_texture_float_linear ? ? ? ? ? ?
OES_texture_half_float ? ? ? ? ? ?
OES_texture_half_float_linear ? ? ? ? ? ?
OES_vertex_array_object ? ? ? ? ? ?
WEBGL_color_buffer_float ? ? ? ? ? ?
WEBGL_compressed_texture_astc ? ? ? ? ? ?
WEBGL_compressed_texture_atc ? ? ? ? ? ?
WEBGL_compressed_texture_etc ? ? ? ? ? ?
WEBGL_compressed_texture_etc1 ? ? ? ? ? ?
WEBGL_compressed_texture_s3tc ? ? ? ? ? ?
WEBGL_compressed_texture_pvrtc ? ? ? ? ? ?
WEBGL_compressed_texture_s3tc ? ? ? ? ? ?
WEBGL_compressed_texture_s3tc_srgb ? ? ? ? ? ?
WEBGL_debug_renderer_info ? ? ? ? ? ?
WEBGL_debug_shaders ? ? ? ? ? ?
WEBGL_depth_texture ? ? ? ? ? ?
WEBGL_draw_buffers ? ? ? ? ? ?
WEBGL_lose_context ? ? ? ? ? ?

[1] Toggling the webgl.enable-draft-extensions preference in about:config is required.

[2] This extension was prefixed with MOZ_ in prior versions.

Consulte também

Etiquetas do documento e contribuidores

Etiquetas: 
 Contribuidores para esta página: mansil
 Última atualização por: mansil,