For faster navigation, this Iframe is preloading the Wikiwand page for WebGL.

WebGL

Материал из Википедии — свободной энциклопедии

WebGL
Логотип программы WebGL
Тип API
Автор Mozilla Foundation
Разработчик Khronos Group
Операционная система Кроссплатформенность
Первый выпуск 3 марта 2011
Последняя версия 2.0[1] (30 августа 2018)
Лицензия Various
Сайт khronos.org/webgl/
Логотип Викисклада Медиафайлы на Викискладе
HTML HTML и HTML5 Динамический HTML XHTML XHTML Mobile Profile[англ.] и CHTML Document Object Model Кодировки символов Мнемоники в HTML Редактор HTML Элементы HTML Семантическая вёрстка Карта изображений Цвета HTML Формы HTML Фреймы HTML HTML5 audio и HTML5 video Canvas Скрипты в HTML Unicode и HTML[англ.] Браузерный движок Quirks mode Каскадные таблицы стилей W3C и WHATWG Web Storage WebGL Сравнение языков разметки документов браузерных движков .mw-parser-output .hlist dl,.mw-parser-output .hlist.hlist ol,.mw-parser-output .hlist.hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li,.mw-parser-output .hlist .mw-empty-elt{display:none}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{content:"\a0 · ";font-weight:bold}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)"\a0 "}.mw-parser-output .hlist-items-nowrap dd,.mw-parser-output .hlist-items-nowrap dt,.mw-parser-output .hlist-items-nowrap li{white-space:nowrap}.mw-parser-output .hlist-items-nowrap dl dl,.mw-parser-output .hlist-items-nowrap dl ol,.mw-parser-output .hlist-items-nowrap dl ul,.mw-parser-output .hlist-items-nowrap ol dl,.mw-parser-output .hlist-items-nowrap ol ol,.mw-parser-output .hlist-items-nowrap ol ul,.mw-parser-output .hlist-items-nowrap ul dl,.mw-parser-output .hlist-items-nowrap ul ol,.mw-parser-output .hlist-items-nowrap ul ul{white-space:normal}.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:100%}.mw-parser-output .navbox .navbar{display:block;font-size:100%}пор

WebGL (Web-based Graphics Library) — кроссплатформенный API для отображения 3D-графики в браузере, разрабатываемый некоммерческой организацией Khronos Group. WebGL использует язык программирования шейдеров GLSL[1] Архивная копия от 13 октября 2018 на Wayback Machine. WebGL исполняется как элемент HTML5 и поэтому является полноценной частью объектной модели документа (DOM API) браузера. Может использоваться с любыми языками программирования, которые умеют работать с DOM API, например, JavaScript, Rust[2] Архивная копия от 17 июня 2018 на Wayback Machine, Java, Kotlin[3] Архивная копия от 13 октября 2018 на Wayback Machine и другими. Все ведущие разработчики браузеров Google (Chrome), Mozilla (Firefox), и Apple (Safari), являются членами Khronos и реализуют WebGL в своих браузерах. За счёт использования низкоуровневых средств поддержки OpenGL часть кода на WebGL может выполняться непосредственно на видеокартах. WebGL — это контекст элемента canvas HTML, который обеспечивает API 3D графики без использования плагинов[2]. Первая спецификация была выпущена 3 марта 2011 года. Современная версия 2.0 (несовместима с версией 1.0) доступна с 27 февраля 2017 года[3][4].

API построена на основе OpenGL ES 2.0 и даёт возможность реализации 3D-графики[5] в браузере, использует HTML5-элемент canvas, также оперирует с DOM. Автоматическое управление памятью предоставляется языком JavaScript[2].

  • WebGL 1.0 — Построена на основе OpenGL ES 2.0, для шейдеров поддерживается язык GLSL ES версии 1.00[6].
  • WebGL 2.0 — Построена на основе OpenGL ES 3.0, для шейдеров поддерживается язык GLSL ES версии 1.00 и 3.00[7].

Реализация

[править | править код]
  • Mozilla Firefox — WebGL был включён на всех платформах, у которых есть нужная графическая карта с актуальными драйверами, начиная с версии 4.0[8].
  • Google Chrome — WebGL включён по умолчанию во всех версиях, начиная с 9[9].
  • Safari — экспериментально поддерживает WebGL, начиная с версии 5.1, полная поддержка реализована и включена по умолчанию в версии 8.0.
  • Opera — WebGL реализован в версии Opera 12.0, но отключён по умолчанию.
  • Internet Explorer — начиная с Internet Explorer 11 WebGL официально поддерживается[10]. До выхода 11 версии независимыми разработчиками были выпущены плагины Chrome Frame и IEWebGL, предусматривающие опции, необходимые для поддержки WebGL в Internet Explorer.

Мобильные браузеры

[править | править код]
  • Maemo 5 — WebGL доступен во встроенном браузере microB начиная с версии прошивки PR1.2 (май 2011)[11].
  • BlackBerry PlayBook — WebGL доступен посредством WebWorks и браузера в PlayBook OS 2.0[12].
  • Google Chrome — WebGL доступен для Android-устройств в бета-версиях начиная с января 2013[13].
  • Firefox for mobile — WebGL доступен для Android устройств в бета-версиях с начала 2011[14].
  • Sony Ericsson Xperia — многие устройства на базе Android имеют поддержку WebGL после обновления прошивки[15].
  • Opera Mobile 12 final поддерживает WebGL (только на Android)[16].
  • Safari для iOS — поддержка реализована в версии 8.0[17].

Рабочая группа

[править | править код]

В состав рабочей группы, разрабатывающей стандарт, входят: Khronos Group, разработчики браузеров Apple Safari, Google Chrome, Mozilla Firefox и Opera, а также специалисты AMD и Nvidia[18].

WebGL возник из экспериментов над Canvas 3D Владимира Вукичевича (Vladimir Vukićević) из Mozilla, разработавшего прототип Canvas 3D в 2006 году. В конце 2007 года и Mozilla[19], и Opera[20] создали свои собственные отдельные реализации.

В начале 2009 года Mozilla и Khronos организовали рабочую группу WebGL[21], 10 декабря 2009 года консорциум опубликовал первую черновую спецификацию WebGL[18][22]. Председатель группы Арун Ранганатан заявил, что завершение работы над спецификацией ожидается в первом квартале 2010 года[18][22]. Окончательная ревизия первой редакции спецификаций была представлена 3 марта 2011 года в Сан-Франциско[23][24].

Разработка следующей версии спецификации началась в 2013 году. Стандарт WebGL 2.0, базирующийся на OpenGL ES 3.0, был ратифицирован консорциумом Khronos в январе 2017 г.[25]. Новая версия стандарта была реализована в браузерах Firefox 51, Chrome 56 и Opera 43[26].

Безопасность

[править | править код]

В июне 2011 года корпорация Microsoft выразила свою обеспокоенность с точки зрения безопасности технологии WebGL, сославшись на чрезмерные по её мнению права доступа к оборудованию и ненадёжность механизмов защиты от отказа от обслуживания (DoS).[27] Вице-президент Mozilla Марк Шавер отверг критику Microsoft, назвав представленные аргументы преувеличенными. Он также отметил наличие у Microsoft собственной 3D веб-технологии Silverlight 5, основанной на тех же принципах, что и WebGL, которую, тем не менее, Microsoft считает достаточно надёжной.[28] Позднее Microsoft изменила своё отношение к технологии WebGL, реализовав её поддержку в своём браузере Internet Explorer 11.[29]

Корпорация Apple, несмотря на затягивания решения о поддержке WebGL в браузере Safari по причинам безопасности, объявила о принятии такого решения на конференции WWDC в 2014 г.[30]

Библиотеки

[править | править код]

Для упрощения разработки WebGL-приложений существуют различные фреймворки и библиотеки. Первой общедоступной стала библиотека WebGLU[31][32]. Среди других библиотек для WebGL — GLGE, C3DL, Copperlicht[33], SpiderGL, gwt-g3d[34] (обёртка для GWT), SceneJS, X3DOM, Processing.js, Babylon.js, Three.js, Turbulenz, OSGJS[35], XB PointStream и CubicVR.js[36].

Blend4Web позволяет визуально редактировать контент для WebGL в открытом пакете 3D моделирования и анимации Blender и экспортировать его для работы в браузерах за одну операцию[37].

Verge3D — WebGL рендерер, экспортирующий сцены напрямую из стандартных редакторов (поддерживаются Autodesk 3ds Max и Blender) с возможностью добавления интерактивных сценариев без программирования[38].

Слой совместимости ANGLE

[править | править код]

ANGLE (Almost Native Graphics Layer Engine)[39] — библиотека, выпущенная под лицензией BSD, которая позволяет переводить содержимое WebGL в OpenGL ES 2.0, вызывать API DirectX 9 и 11, которые взаимодействуют с платформами Microsoft Windows без необходимости в дополнительных драйверах OpenGL. Используется по умолчанию в браузерах Google Chrome и Firefox.

Примечания

[править | править код]
  1. WebGL 2.0 Specification. Дата обращения: 8 февраля 2017. Архивировано 28 января 2017 года.
  2. 1 2 WebGL - OpenGL ES 2.0 for the Web. Khronos.org. Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  3. Khronos Reveals API Updates & New Working Groups at GDC. Дата обращения: 12 октября 2018. Архивировано 8 марта 2017 года.
  4. WebGL Overview. Дата обращения: 12 декабря 2009. Архивировано 15 декабря 2009 года.
  5. WebGL Specification. Khronos.org. Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  6. WebGL Specification. Дата обращения: 8 февраля 2017. Архивировано 27 марта 2017 года.
  7. WebGL 2 Specification. Дата обращения: 8 февраля 2017. Архивировано 28 января 2017 года.
  8. Mozilla Firefox 4 Release Notes. Дата обращения: 29 августа 2011. Архивировано из оригинала 23 марта 2011 года.
  9. Google releases Chrome 9; comes with Google Instant, WebGL — FierceCIO:TechWatch. Дата обращения: 29 августа 2011. Архивировано из оригинала 25 октября 2011 года.
  10. WebGL (Windows). Дата обращения: 16 января 2014. Архивировано 16 января 2014 года.
  11. suihkulokki. WebGL on N900. Suihkulokki.blogspot.com (7 июня 2010). Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  12. Halevy, Ronen PlayBook OS 2.0 Developer Beta Includes WebGL, Flash 11, & AIR 3.0. BerryReview. Дата обращения: 15 ноября 2011. Архивировано 12 марта 2013 года.
  13. Brandon Jones. Get WebGL working on the Android Chrome Beta. Tojicode (10 января 2013). Дата обращения: 12 февраля 2013. Архивировано 12 марта 2013 года.
  14. iclkevin. WebGL on Mobile Devices. iChemLabs (12 ноября 2011). Дата обращения: 25 ноября 2011. Архивировано 12 марта 2013 года.
  15. Xperia™ phones first to support WebGL™ – Developer World. blogs.sonyericsson.com. The Sony Ericsson Developer Program (29 ноября 2011). Дата обращения: 5 декабря 2011. Архивировано 12 марта 2013 года.
  16. Opera Mobile 12. Opera Software. Дата обращения: 27 февраля 2012. Архивировано 12 марта 2013 года.
  17. WebGL on iOS 8 Safari and webview. Дата обращения: 9 июля 2014. Архивировано из оригинала 14 июля 2014 года.
  18. 1 2 3 Khronos опубликовала черновой вариант WebGL Архивная копия от 9 сентября 2015 на Wayback Machine // Lenta.ru, 11.12.2009
  19. Canvas 3D: GL power, web-style. Blog.vlad1.com. Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  20. Taking the canvas to another dimension. My.opera.com (26 ноября 2007). Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  21. Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet. Khronos.org (4 августа 2009). Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  22. 1 2 WebGL 3D web standard reaches draft stages Архивная копия от 15 декабря 2009 на Wayback Machine // Techradar
  23. Kurt Bakke. WebCL To Enable GPU-Accelerated Web Apps (англ.). ConceivablyTech (3 марта 2011). Дата обращения: 4 марта 2011. Архивировано 12 апреля 2012 года.
  24. Accent. Khronos публикует спецификации WebGL 1.0 — ускорение 3D-графики для web-страниц без подключаемых модулей. iXBT.com (3 марта 2011). Дата обращения: 4 марта 2011. Архивировано из оригинала 6 марта 2011 года.
  25. WebGL 2 Specification. khronos.org (5 июля 2017). Дата обращения: 16 августа 2017. Архивировано 8 августа 2017 года.
  26. WebGL - Web APIs. MDN. Дата обращения: 16 августа 2017. Архивировано 28 августа 2017 года.
  27. WebGL Considered Harmful. Microsoft (16 июня 2011). Дата обращения: 16 июня 2011. Архивировано 12 апреля 2012 года.
  28. Mozilla rejects Microsoft criticism of WebGL. The Inquirer (20 июня 2011). Дата обращения: 29 июня 2011. Архивировано 12 апреля 2012 года.
  29. Microsoft (Finally) Confirms WebGL Support For [[Internet Explorer]] 11. TechCrunch (26 июня 2013). Дата обращения: 7 июля 2015. Архивировано 9 июля 2015 года.
  30. Safari On iOS8 Supports WebGL - The New Era Can Now Commence. I Programmer (4 июня 2014). Дата обращения: 7 июля 2015. Архивировано 7 июля 2015 года.
  31. OneGeek/WebGLU · GitHub. Дата обращения: 15 марта 2013. Архивировано 16 марта 2013 года.
  32. Benjamin DeLillo. First WebGLU release. Bjartr.blogspot.com (2 октября 2009). Дата обращения: 14 мая 2011. Архивировано 12 апреля 2012 года.
  33. CopperLicht - JavaScript 3D Engine using WebGL. Дата обращения: 14 марта 2013. Архивировано 16 марта 2013 года.
  34. gwt-g3d - 3D library for GWT - Google Project Hosting. Дата обращения: 14 марта 2013. Архивировано 16 марта 2013 года.
  35. OSG.JS by cedricpinson. Дата обращения: 14 марта 2013. Архивировано 16 марта 2013 года.
  36. cjcliffe/CubicVR.js · GitHub. Дата обращения: 14 марта 2013. Архивировано 16 марта 2013 года.
  37. Официальный сайт Blend4Web - О проекте. Blend4Web.com. Дата обращения: 3 июля 2015. Архивировано 1 июля 2015 года.
  38. Verge3D. Soft8Soft. Дата обращения: 14 июня 2018. Архивировано 14 июня 2018 года.
  39. angleproject - ANGLE: Almost Native Graphics Layer Engine - Google Project Hosting. Дата обращения: 14 марта 2013. Архивировано 16 марта 2013 года.
Для улучшения этой статьи желательно: Исправить статью согласно стилистическим правилам Википедии.Проверить качество перевода с иностранного языка.После исправления проблемы исключите её из списка. Удалите шаблон, если устранены все недостатки.
{{bottomLinkPreText}} {{bottomLinkText}}
WebGL
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?