---
title: WebGL
slug: Web/API/WebGL_API
tags:
- WebGL
- Графіка
- Детально
- Медіа
translation_of: Web/API/WebGL_API
---
{{WebGLSidebar}}
WebGL (Web Graphics Library) - це JavaScript API для відображення інтерактивної 3D та 2D графіки в будь-якому сумісному веб-переглядачі без використання плагінів. WebGL робиць це вводячи API, яке точно відповідає OpenGL ES 2.0 та може бути використане в HTML5 {{HTMLElement("canvas")}} елементах.
Підтримка WebGL присутня в Firefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+ and Internet Explorer 11+; проте, користувацький пристрій має також мати апаратне забезпечення, яке підтримує ці функції.
Елемент {{HTMLElement("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_float")}}
- {{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_es3")}}
- {{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")}}
Події
- {{Event("webglcontextlost")}}
- {{Event("webglcontextrestored")}}
- {{Event("webglcontextcreationerror")}}
Константи і типи
Керівництва і навчальні сторінки
Детальні керівництва
- WebGL model view projection: Детальне пояснення трьох основних матриць, які переважно використовуються для представлення 3D виду об'єкту: матриця моделі, виду та проекції.
- Matrix math for the web: Корисне керівництво про те, як працюють матриці 3D перетворення, та як вони можуть бути використані в web - як для розрахунків WebGL, так і для CSS3 перетворень .
Ресурси
- Raw WebGL: An introduction to WebGL Розмова Ніка Дізолнірс який знайомить з основами WebGL. Це відмінне місце, щоб почати, якщо ви ніколи не займались низькорівневим програмуванням графіки.
- Khronos WebGL site Основний веб-сайт WebGL на Khronos Group.
- Learning WebGL Сайт з керівництвами про використання WebGL.
- WebGL Fundamentals Базове керівництво про основи WebGL.
- WebGL playground An online tool for creating and sharing WebGL projects. Good for quick prototyping and experimenting.
- WebGL Academy Редактор HTML/JavaScript з керівництвами для вивчення основ програмування під WebGL.
- WebGL Stats Сайт зі статистикою про можливості WebGL в веб-переглядачах на різних платформах.
Бібліотеки
- glMatrix JavaScript-бібліотека матриці і вектору для WebGL додатків з високою ефективністю.
- Sylvester Бібліотека з відкритим початковим кодом для маніпулювання векторами і матрицями. Не оптимізована для WebGL але надзвичайно міцна.
Специфікації
Специфікація |
Статус |
Коментар |
{{SpecName('WebGL')}} |
{{Spec2('WebGL')}} |
Початкове визначення. Базується на OpenGL ES 2.0 |
{{SpecName('WebGL2')}} |
{{Spec2('WebGL2')}} |
Будується поверх WebGL1. На основі OpenGL ES 3.0. |
{{SpecName('OpenGL ES 2.0')}} |
{{Spec2('OpenGL ES 2.0')}} |
|
{{SpecName('OpenGL ES 3.0')}} |
{{Spec2('OpenGL ES 3.0')}} |
|
Сумісність
{{CompatibilityTable}}
Функція |
Firefox (Gecko) |
Chrome |
Internet Explorer |
Opera |
Safari |
Базова підтримка |
{{CompatGeckoDesktop("2.0")}} |
9 |
11 |
12[1] |
5.1[1] |
Функція |
Firefox Mobile (Gecko) |
Chrome for Android |
IE Mobile |
Opera Mobile |
Safari Mobile |
Базова підтримка |
4 |
25[1] |
{{CompatNo}} |
12[1] |
8.1 |
[1] Реалізація цієї функції є експериментальною.
Зауваження по сумісності
На додаток до веб-переглядача, сам графічний процесор також має підтримувати цю функцію. Так, наприклад, стиснення текстур S3 (S3TC) доступне тільки для планшетів на основі Tegra . Більшість браузерів роблять контекст WebGL доступним через контекстне ім'я webgl
, але старішим також потрібно experimental-webgl
. Крім того, майбутній WebGL 2 повністю сумісний і матиме ім'я контексту webgl2
.
Зауваження Gecko
Налагодження і тестування WebGL
Починаючи з Gecko 10.0 {{geckoRelease("10.0")}}, є дві доступні опції, які дозволяють контролювати можливості WebGL з метою тестування:
webgl.min_capability_mode
- Властивість типу Boolean яка, коли
true
, вмикає режим мінімальної сумісності. Коли WebGL знаходиться в даному режимі, він налаштований підтримувати тільки мінімальний набір функцій і можливостей, необхідних специфікації WebGL. Це дозволяє вам бути впевненими, що важ WebGL код буде працювати на будь-якому пристрої або веб-переглядачі, незалежно від інших можливостей. Має значення false
за замовчування.
webgl.disable_extensions
- Властивість типу Boolean яка, коли
true
, вимикає всі розширення WebGL. Має значення false
за замовчуванням.
Дивіться також