{{WebGLSidebar}}
WebGL (Web Graphics Library) 是一个不用任何插件,兼容以下任一web浏览器,为了渲染2D,3D交互图形的JavaScript API. WebGL 引用的JavaScript API遵守OpenGL ES2.0规范,通过HTML5中 <canvas> 元素实现功能。
目前支持 WebGL 浏览器:Firefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+ and Internet Explorer 11+; 然而, WebGL一些特性也需要用户设备支持.
<canvas>
元素也可以使用 Canvas 2D 来实现在web页面中绘制2D图形。
参考
标准接口
- {{domxref("WebGLRenderingContext")}}
- {{domxref("WebGL2RenderingContext")}} {{experimental_inline}}
- {{domxref("WebGLActiveInfo")}}
- {{domxref("WebGLBuffer")}}
- {{domxref("WebGLContextEvent")}}
- {{domxref("WebGLFramebuffer")}}
- {{domxref("WebGLProgram")}}
- {{domxref("WebGLQuery")}} {{experimental_inline}}
- {{domxref("WebGLRenderbuffer")}}
- {{domxref("WebGLSampler")}} {{experimental_inline}}
- {{domxref("WebGLShader")}}
- {{domxref("WebGLShaderPrecisionFormat")}}
- {{domxref("WebGLSync")}} {{experimental_inline}}
- {{domxref("WebGLTexture")}}
- {{domxref("WebGLTransformFeedback")}} {{experimental_inline}}
- {{domxref("WebGLUniformLocation")}}
- {{domxref("WebGLVertexArrayObject")}} {{experimental_inline}}
扩展接口
- {{domxref("ANGLE_instanced_arrays")}}
- {{domxref("EXT_blend_minmax")}}
- {{domxref("EXT_color_buffer_half_float")}}
- {{domxref("EXT_disjoint_timer_query")}}
- {{domxref("EXT_frag_depth")}}
- {{domxref("EXT_sRGB")}}
- {{domxref("EXT_shader_texture_lod")}}
- {{domxref("EXT_texture_filter_anisotropic")}}
- {{domxref("OES_element_index_uint")}}
- {{domxref("OES_standard_derivatives")}}
- {{domxref("OES_texture_float")}}
- {{domxref("OES_texture_float_linear")}}
- {{domxref("OES_texture_half_float")}}
- {{domxref("OES_texture_half_float_linear")}}
- {{domxref("OES_vertex_array_object")}}
- {{domxref("WEBGL_color_buffer_float")}}
- {{domxref("WEBGL_compressed_texture_atc")}}
- {{domxref("WEBGL_compressed_texture_etc1")}}
- {{domxref("WEBGL_compressed_texture_pvrtc")}}
- {{domxref("WEBGL_compressed_texture_s3tc")}}
- {{domxref("WEBGL_debug_renderer_info")}}
- {{domxref("WEBGL_debug_shaders")}}
- {{domxref("WEBGL_depth_texture")}}
- {{domxref("WEBGL_draw_buffers")}}
- {{domxref("WEBGL_lose_context")}}
- {{domxref("WebGLTimerQueryEXT")}}
- {{domxref("WebGLVertexArrayObjectOES")}}
事件
- {{Event("webglcontextlost")}}
- {{Event("webglcontextrestored")}}
- {{Event("webglcontextcreationerror")}}
常量和类型
指南和教程
- WebGL 教程
- WebGL best practices 大量技巧和建议来改善你的WebGL的知识。
- Using extensions 在WebGL如何进行有用的扩展。
资源
- Raw WebGL: An introduction to WebGL Nick Desaulniers 主讲的WebGL 基础知识. 这是一个开始初级图形编程的好地方
- Khronos WebGL site Khronos Group 的WebGl 官方站点.
- Learning WebGL 一个关于如何使用WebGL的教程站点。
- WebGL Fundamentals 一个关于WebGL的初级教程。
- WebGL playground 一个在线创建和分享WebGL的工具站点. 非常适合快速创建一个原型或者体验一个成品.
- WebGL Academy 通过一个 HTML/JavaScript 编辑器来学习一个基础的WebGl基础知识。
库
规范
规格 | 状态 | 建议 |
---|---|---|
{{SpecName('WebGL')}} | {{Spec2('WebGL')}} | Initial definition. |
{{SpecName('WebGL2')}} | {{Spec2('WebGL2')}} |
浏览器兼容性
{{CompatibilityTable}}
Feature | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{CompatGeckoDesktop("2.0")}} | 9 | 11 | 12 (experiment) | 5.1 (experiment) |
OES_texture_float |
{{CompatGeckoDesktop("6.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
OES_standard_derivatives |
{{CompatGeckoDesktop("10.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
EXT_texture_filter_anisotropic |
{{CompatGeckoDesktop("13.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
WEBGL_compressed_texture_s3tc |
{{CompatGeckoDesktop("15.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
drawingBufferWidth and drawingBufferHeight attributes |
{{CompatGeckoDesktop("9.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Feature | Firefox Mobile (Gecko) | Chrome for Android | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | 4 | 25 (experiment) | {{CompatNo}} | 12 (experiment) | 8.1 |
drawingBufferWidth and drawingBufferHeight attributes |
{{CompatGeckoMobile("9.0")}} | 25 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
OES_texture_float |
{{CompatGeckoMobile("6.0")}} | 25 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
OES_standard_derivatives |
{{CompatGeckoMobile("10.0")}} | 25 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
EXT_texture_filter_anisotropic |
{{CompatGeckoMobile("13.0")}} | 25 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
OES_element_index_uint |
{{CompatUnknown}} | 25 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
OES_vertex_array_object |
{{CompatUnknown}} | 25 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
WEBGL_compressed_texture_s3tc |
{{CompatGeckoMobile("15.0")}} | 25 prefixed with WEBKIT_ |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
WEBKIT_EXT_texture_filter_nisotropic |
{{CompatNo}} | 25 | {{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} |
[1] 这个特性目前在试验阶段.
兼容性说明
除了浏览器,GPU本身也需要支持这个特性. 举个例子, S3 纹理压缩 (S3TC) 只可以用在基于图睿的GPU处理器. 大多数浏览器支持 webgl
context name, 但是旧的浏览器支持 experimental-webgl更好些
. 除此之外, 即将来临的 WebGL 2 只会向后兼容,在未来将使用新的上下文名称 experimental-webgl2
(目前正在测试中).
Gecko备忘
WebGL debugging and testing
开始使用Gecko 10.0 {{geckoRelease("10.0")}}, 在测试中,这里有两个参数可以让你来控制WebGL性能:
webgl.min_capability_mode
- A Boolean property that, when
true
, enables a minimum capability mode. When in this mode, WebGL is configured to only support the bare minimum feature set and capabilities required by the WebGL specification. This lets you ensure that your WebGL code will work on any device or browser, regardless of their capabilities. This isfalse
by default. webgl.disable_extensions
- A Boolean property that, when
true
, disables all WebGL extensions. This isfalse
by default.