WebGL (Web图形库) 是一种JavaScript API,用于在任何兼容的Web浏览器中呈现交互式3D和2D图形,而无需使用插件。WebGL通过引入一个与OpenGL ES 2.0紧密相符合的API,可以在HTML5 元素中使用。
目前支持 WebGL 的浏览器有:Firefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+ 和 Internet Explorer 11+;然而, WebGL一些特性也需要用户的硬件设备支持。
元素也被 Canvas 2D 用于在网页上做2D图形。
WebGLRenderingContext
WebGL2RenderingContext
WebGLActiveInfo
WebGLBuffer
WebGLContextEvent
WebGLFramebuffer
WebGLProgram
WebGLQuery
WebGLRenderbuffer
WebGLSampler
WebGLShader
WebGLShaderPrecisionFormat
WebGLSync
WebGLTexture
WebGLTransformFeedback
WebGLUniformLocation
WebGLVertexArrayObject
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_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
webglcontextlost
webglcontextrestored
webglcontextcreationerror
WebGL 2 是WebGL的一个主要更新,它通过WebGL2RenderingContext
接口提供。它基于OpenGL ES 3.0,新功能包括:
另请参见博客文章 "WebGL 2 lands in Firefox" 和 webglsamples.org/WebGL2Samples 几个演示。
下面,您将找到各种指南,以帮助您学习WebGL概念和教程,提供分步课程和示例。
WebGL 中的数据
编写WebGL代码时使用的变量,缓冲区和其他类型数据的指南。
WebGL 最佳实践
提示和建议,以帮助您提高WebGL内容的质量,性能和可靠性。
使用扩展
WebGL 扩展的使用指南。
WebGL 教程
WebGL 核心概念的初学者指南。如果您以前没有 WebGL 的经验,那么这是一个很好的起点。
一个基础的 WebGL 的 2D 动画示例
此示例演示了单色形状的简单动画。检查的主题是适应宽高比差异,从多个着色器集合构建着色器程序的功能,以及 WebGL 绘图的基础知识。
WebGL 模型视图投影
详述了常用于显示3D物体视图的三种核心矩阵:模型,视图和投影矩阵。
Web 中的矩阵运算
讲述 3D 变换矩阵工作原理的指南 —— 这也能在WebGL计算和CSS3变换中派上用场。
Specification | Status | Comment |
---|---|---|
WebGL 1.0 | Recommendation | Initial definition. Based on OpenGL ES 2.0 |
WebGL 2.0 | Editor's Draft | Builds on top of WebGL 1. Based on OpenGL ES 3.0. |
OpenGL ES 2.0 | Standard | |
OpenGL ES 3.0 | Standard |
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Full support9 | Full support12 Notes 打开 |
Full support4 | Full support11 Notes 打开 |
Full support12 | Full support5.1 | Full supportYes | Full support25 | Full supportYes Notes 打开 |
Full supportYes | Full support12 | Full support8.1 | Full supportYes |
Full support
Full support
See implementation notes.
See implementation notes.
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Full support56 | No supportNo | Full support51 | No supportNo | Full support43 | No supportNo | Full support58 | Full support58 | No supportNo | Full support51 | Full support43 | No supportNo | Full support7.0 |
Full support
Full support
No support
No support
除了浏览器,GPU本身也需要支持这个特性. 举个例子, S3 纹理压缩 (S3TC) 只可以用在基于图睿的GPU处理器. 大多数浏览器支持 webgl
context name, 但是旧的浏览器支持 experimental-webgl更好些
. 除此之外, 即将来临的 WebGL 2 只会向后兼容,在未来将使用新的上下文名称 experimental-webgl2
(目前正在测试中).
WebGL调试与检测
开始使用Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7), 在测试中,这里有两个参数可以让你来控制WebGL性能:
webgl.min_capability_mode
一个以布尔值存储的属性。当它的值为True
时,将会启用最小性能模式。当这个模式启用时,WebGL将会仅提供由其标准指定的最基本的功能集和性能支持。这样可以确保您的WebGL代码能够在性能的设备和浏览器上正确运行。它的默认值是False
。
webgl.disable_extensions
一个以布尔值存储的属性。当它的值为True
时,会禁用所有的WebGL拓展。它的默认值是False。
中文引用
https://developer.mozilla.org/zh-CN/docs/Web/API/WebGL_API#%E5%8F%82%E8%80%83
英文
https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API