正如咱們上週報道的,國外開發者Francois Remy在泄露版Windows Blue附帶的Internet Explorer 11中發現,WebGL接口已經封裝完成,但功能上還未能開放支持。在這以後,另外一名開發者Rafael Rivera繼續深刻挖掘,居然發現了在此版本的Internet Explorer 11中開啓WebGL支持的方法。web
實際上方法簡單地稱奇。首先你必須已經安裝了Windows 8 Blue build 9364和最新的顯卡驅動(系統自帶的顯卡驅動在OpenGL方面支持不足),而後只須要簡單地導入如下的註冊表腳本便可。canvas
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl] [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_WEBGL] "iexplore.exe"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_WEBGL_HLSL_SHADERS] "iexplore.exe"=dword:00000000
須要特別值得注意的是其中最後一個FEATURE_WEBGL_HLSL_SHADERS的鍵值,若是設置爲1,那麼會讓Internet Explorer 11使用IESL代替GLSL做爲着色器語言。若是設置爲0,則符合先在大多數WebGL應用的習慣。跨域
目前IE 11對WebGL的支持度仍然很是有限,你能夠把一下代碼另存爲HTML文件,而後在IE 11中打開,你會發現網頁中出現一片藍色的區域,而這正表明着網頁成功得到了名爲「experimental-webgl」的3D繪製上下文——Internet Explorer 11終於支持WebGL了!數組
<body onload="demo()"> <canvas style="height: 100%; width: 100%" id='webgl' /> </body> <script> var gl = {}; function demo() { var canvas = document.getElementById("webgl"); try { gl = canvas.getContext("experimental-webgl"); } catch(e) { } if (gl) { gl.clearColor(0, 0.678, 0.937, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); } } </script>
下面附上IE 11運行LearningWebGL教程第15課實例的視頻:瀏覽器
回顧過去,自從WebGL這項新的網頁圖形規範提出伊始,微軟就從未表露出喜色。在2011年6月,微軟更是僱傭一家歐洲安全機構對WebGL提出最強烈的質疑,認爲讓網頁直接暴露給GPU是很是危險的行爲。若是真要認真地從技術上講,微軟當時主要發難於跨域資源、DoS攻擊以及直接操控GPU。安全
雖然做爲一個剛剛誕生的技術標準,WebGL的確有不少路要走,可是如此興師動衆的指責讓不少對這項新技術充滿但願的開發者感到微軟有些過度。當時開發者廣泛認爲微軟對於WebGL的指責不是從技術角度出發的,而是徹底出於商業目的。著名的WebGL開發者和佈道師Gregg Tavares更是祭出一篇題目直接帶着髒字的戰鬥檄文直斥微軟。參見:《WebGL Security and Microsoft Bullshit》網絡
在震驚業界的斥責以後,WebGL工做組把工做重心轉移到了致力於解決安全問題上,一直到今天Khronos Group在GDC 2013上最新公佈的WebGL 1.0.2標準中仍是把安全放在了首位。webgl
隨後在2012年,微軟指責WebGL的多項安全軟肋都已經取得了極爲有效的解決進展:如今CORS已經能夠有效的解決跨域資源的問題;而許多廠商也已經部署了GL_ARB_robustness擴展來解決DoS攻擊問題,而且WebGL工做組還在繼續尋找其餘的解決辦法。至於直接操控GPU的問題,則是沒法避免的,只要一種技術能夠直接與GPU對話都會形成必定程度的安全威脅,在2011年於墨爾本召開的一次技術大會上,有人用相同的原理在Microsoft Silverlight 五、Adobe Flash 11和WebGL上實現了一樣的漏洞攻擊。ui
儘管微軟仍然對WebGL持抗拒態度,可是在2011年8月舉辦的Siggraph 2011上,卻爆出IE 10即將支持Typed Array(類型化數組)的消息。微軟拒絕了WebGL,但卻抵不住誘惑,引進了由於WebGL才誕生的Typed Array,這項技術容許開發者直接在Web上操控二進制數據。2011年12月1日,微軟IE官方博客發表了一片名爲《 Working with Binary Data using Typed Arrays》的文章,正式爲 IE10 引進了Type Array。spa
時光荏苒,微軟此後在多個場合屢次被問到關於WebGL的問題,但微軟發言人永遠都是微笑的避而不答,固然有時候也會重複一下安全問題這個老梗。
2012年3月6日,在香港舉辦的World Internet Developers’ Summit活動中,微軟高級佈道師Giorgio Sardo作了《切繩子游戲的幕後故事》的演講,在提問環節中有人提出IE將會在何時支持WebGL的問題,他的回答是「Not now」。使人感動的是他沒直接說「never」實在是太給面子了。
隨着WebGL的日漸成熟,愈來愈多的WebGL實例和應用脫引而出,微軟逐漸意識到了無論他們是否要支持WebGL,他們如今缺少一種網頁圖形技術來讓本身的瀏覽器在網頁視覺領域和Mozilla、Google、Opera來抗衡。
2012年11月,CNET 的記者 Shankland 採訪了微軟網絡標準工做組的領導人、同時也是 W3C HTML 工做組的聯合主席 Paul Cotton。他依然用安全問題做爲擋箭牌,可是卻破天荒指出IE團隊對開發者關於IE缺少圖形API的詬病深表理解,他說:「咱們依然堅持對 WebGL 的安全問題表示擔心。若是要咱們支持 WebGL,那麼就必須毫無餘地的解決這些安全問題。從 IE八、IE9 到 IE10,每次咱們宣佈添加新的特性的時候,都會有人反饋要求支持其餘功能,而在這些人們呼籲的功能中 WebGL 絕對是位居前五位的。咱們對 IE 博客上的留言很是清楚,也很明白如今的情況。在 Web 上開發可交互的 3D 圖形的確很棒。若是咱們能夠解決安全問題,那我想咱們會認真地尋找一種爲 Web 引入 3D 圖形的方法。」
此後,Windows Blue泄露,開發者意外發現IE 11已經封裝好WebGL接口,而且能夠經過註冊表開啓支持,這樣纔有了本文開頭的一幕。
這正是四年盤踞龍虎鬥,微軟終將入大流!歡迎IE 11加入WebGL你們庭!
via:hiwebgl