正如咱们上周报道的,国外开发者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