{{WebGLSidebar}}
WebGL (Web Graphics Library) 是一个用以渲染交互式3D和2D图形的无需插件且兼容下一代浏览器的 JavaScript API。WebGL 引用的JavaScript API遵守OpenGL ES2.0规范,通过HTML5中 <canvas> 元素实现功能。
目前支持 WebGL 的浏览器有:Firefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+ 和 Internet Explorer 11+;然而, WebGL一些特性也需要用户的硬件设备支持。
<canvas>
元素也可以使用 Canvas 2D 来实现在网页中绘制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核心概念的入门指南。WebGL初学者很好的起点。
- WebGL best practices 大量技巧和建议来提高你的WebGL的知识。
- Using extensions 在WebGL如何进行有用的扩展。
进阶指南
- WebGL model view projection详述了常用于显示3D物体视图的三种核心矩阵:模型,视图和投影矩阵。
- Matrix math for the web讲述3D变换矩阵工作原理的指南,这也能在WebGL计算和CSS3变换中派上用场。
资源
- 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调试与检测
开始使用Gecko 10.0 {{geckoRelease("10.0")}}, 在测试中,这里有两个参数可以让你来控制WebGL性能:
webgl.min_capability_mode
- 一个以布尔值存储的属性。当它的值为
True
时,将会启用最小性能模式。当这个模式启用时。WebGL将会仅提供由其标准指定的最基本的功能集和性能支持。这样可以确保您的WebGL代码能够在性能的设备和浏览器上正确运行。它的默认值是False
。 webgl.disable_extensions
- 一个以布尔值存储的属性。当它的值为
True
时,会禁用所有的WebGL拓展。它的默认值是False。