2016-12-26 8 views
1

Некоторые сайты говорят, что вы должны инициализировать WebGL следующим образом:разница между «WebGL» и «опытно-WebGL»

var gl = c.getContext("webgl") || c.getContext("experimental-webgl"); 

if (!gl) 
    alert("This browser doesn't support WebGL!"); 

В чем разница между webgl и experimental-webgl? Единственное описание, которое я смог найти на MDN:

getContext (в DOMString ContextID) RenderingContext Возвращает контекст рисования на холсте, или пустое значение, если идентификатор контекста не поддерживается. Контекст рисования позволяет рисовать на холсте. Вызов getContext с «2d» возвращает объект CanvasRenderingContext2D, тогда как вызов его с помощью «experimental-webgl» (или «webgl») возвращает объект WebGLRenderingContext. Этот контекст доступен только в браузерах, реализующих WebGL.

Однако это делает 2, похоже, они одинаковы. Есть ли разница?

ответ

5

TL; DR: «experimental-webgl» = beta, он использовался браузерами до того, как WebGL 1.0 отправлен, чтобы попытаться указать . Это не окончательный. Когда WebGL 1.0 отправлен и браузер passed all the conformance tests, тогда этот браузер начнет принимать «webgl», а «experimental-webgl» будет просто синонимом и устарел.

Длинная версия: производители

Браузер, используемый для обозначения вещей, которые еще или полностью не были стандартизированы. Надеюсь, разработчики попытаются разобраться. Когда стандартная финализация префикса будет удалена, и все будут использовать только неподписанную версию. Префикс «экспериментальный» оставлен с той эпохи. Производители браузеров выяснили, что префиксы были плохой идеей, потому что 1000 веб-сайтов будут использовать префикс на производственных сайтах, а затем браузеры не смогут удалить префикс, не нарушая тысячи сайтов.

Поставщики браузеров в целом согласились не делать этого больше. Вместо этого они устанавливают новые функции за флагами, просят разработчиков протестировать, когда поставщики браузеров и комитеты по стандартам обоснованно уверены, что все хорошо и стабильно, они позволяют новой функции работать без флага. WebGL2 был сделан этим новым способом, поэтому нет «экспериментальных-webgl2», только флаги браузера.

Единственный браузер, которым по-прежнему нужен «экспериментальный-webgl», является Edge. Он использует это только потому, что Edge по-прежнему не реализует всю спецификацию WebGL. Для всех других браузеров «экспериментальный-webgl» точно такой же, как «webgl», и он просто остался с той старой эпохи.

Лично я больше не использую «экспериментальный webgl». Это означает, что мой код не будет работать в Edge до тех пор, пока они не будут соответствовать стандартам. ИМО Им нужно давление веб-сайтов, которые не работают, чтобы заставить их тратить ресурсы, исправляя их сломанную реализацию, поскольку она была нарушена уже много лет.

Смежные вопросы