如何在IE11中开启WebGL暨微软和WebGL的恩怨情仇录

正如我们上周报道的,国外开发者Francois Remy在泄露版Windows Blue附带的Internet Explorer 11中发现,WebGL接口已经封装完成,但功能上还未能开放支持。在这之后,另一名开发者Rafael Rivera继续深入挖掘,竟然发现了在此版本的Internet Explorer 11中开启WebGL支持的方法。

实际上方法简单地称奇。首先你必须已经安装了Windows 8 Blue build 9364和最新的显卡驱动(系统自带的显卡驱动在OpenGL方面支持不足),然后只需要简单地导入以下的注册表脚本即可。

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 >
<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标准中还是把安全放在了首位。

随后在2012年,微软指责WebGL的多项安全软肋都已经取得了极为有效的解决进展:现在CORS已经可以有效的解决跨域资源的问题;而许多厂商也已经部署了GL_ARB_robustness扩展来解决DoS攻击问题,并且WebGL工作组还在继续寻找其他的解决办法。至于直接操控GPU的问题,则是无法避免的,只要一种技术可以直接与GPU对话都会造成一定程度的安全威胁,在2011年于墨尔本召开的一次技术大会上,有人用相同的原理在Microsoft Silverlight 5、Adobe Flash 11和WebGL上实现了同样的漏洞攻击。

尽管微软仍然对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。

时光荏苒,微软此后在多个场合多次被问到关于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,那么就必须毫无余地的解决这些安全问题。从 IE8、IE9 到 IE10,每次我们宣布添加新的特性的时候,都会有人反馈要求支持其他功能,而在这些人们呼吁的功能中 WebGL 绝对是位居前五位的。我们对 IE 博客上的留言非常清楚,也很明白现在的状况。在 Web 上开发可交互的 3D 图形的确很棒。如果我们可以解决安全问题,那我想我们会认真地寻找一种为 Web 引入 3D 图形的方法。”

此后,Windows Blue泄露,开发者意外发现IE 11已经封装好WebGL接口,并且可以通过注册表开启支持,这样才有了本文开头的一幕。

这正是四年盘踞龙虎斗,微软终将入大流!欢迎IE 11加入WebGL大家庭!

via:hiwebgl

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
文章引用地址:http://www.iefans.net/ie11-kaiqi-webgl/ 作者:iefans

时间: 2024-11-29 06:12:54

如何在IE11中开启WebGL暨微软和WebGL的恩怨情仇录的相关文章

如何在BIOS中开启虚拟化技术

虚拟化技术目前主要依赖于您电脑的CPU型号及BIOS,某些CPU或者BIOS暂时还不能支持虚拟化技术.支持虚拟化技术的可以在BIOS中开启,开启方法如下: 1.进入BIOS.开机时按F2或F12或DEL或ESC等键(各电脑有所不同). 2.进入BIOS后,找到Configuration选项,选择Intel Virtual Technology并回车,将光标移至Enabled,然后再回车,最后按F10保存并退出. 如果找不到Configuration选项,可以试试下面的方法: (1)某些HP(惠普

Coredump介绍及如何在Android中开启和使用来分析Crash等问题

文章目录: Coredump简介及使用... 1 目录... 2 一.什么是Coredump. 3 二.Coredump产生的原因... 3 三.如何控制产生Coredump. 4 四.使用Coredump的准备... 4 五.开始使用Coredump. 5 一.什么是Coredump 有些C/C++程序或者通过JNI调用了C/C++的APK程序可以通过编译, 但在运行时会出现错误,比如常见的signal 11 (SIGSEGV),这样的程序都是可以通过编译的,而且这样的错误一般情况下不会像编译

如何在IE11中设置兼容模式?设置的具体方法

IE11浏览器软件版本:简体中文正式版 For Win7网络工具立即查看 1.同样进入需要兼容性模式的网站,点击菜单栏位工具--F12开发者人员工具!如下图所示. 2.在开发者选项左下侧菜单栏位,点击向下的箭头,直至底部! 3.选择最后一个仿真图标,如下图所示! 4.在仿真页面,点击用户代理字符串,选择IE6.7.8任意一个即可! 温馨提示: 该方法适用开发人员调试用!该方法关闭即失去兼容性显示. 以上就是小编关于 IE11兼容模式设置方法 的内容,希望对大家有所帮助. 原文地址:https:/

如何在Ruby中编写微服务?

[编者按]本文作者为 Pierpaolo Frasa,文章通过详细的案例,介绍了在Ruby中编写微服务时所需注意的方方面面.系国内 ITOM 管理平台 OneAPM 编译呈现. 最近,大家都认为应当采用微服务架构.但是,又有多少相关教程呢?我们来看看这篇关于用Ruby编写微服务的文章吧. 人人都在讨论微服务,但我至今也没见过几篇有关用Ruby编写微服务的.像样的教程.这可能是因为许多Ruby开发人员仍然最喜欢Rails架构(这没什么不好,Rails本身也没什么不好,但是Ruby可以做到的事还有很

在Hibernate中开启日志

在Hibernate中开启日志 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 在项目中,如果要排查故障,找出Bug,离不开日志信息.那么在Hibernate项目中如何开启日志输出呢?本文讲述如何在Hibernate中开启日志,以及Hibernate的日志级别. 一.项目开发环境 具体以一个示例项目为例,我们的项目使用了: Maven 3.2.3 http://maven.apache.org/ Hibernate 5.0.0.CR1 RELEASE

[整理]IE11中的WebGL探秘:渲染速度超Chrome

http://www.csdn.net/article/2013-12-19/2817854-IE11-WebGL-and-more 摘要:IE11开始支持WebGL,并且效果非常好,IE11的WebGL渲染器速度是canvas2d的十几倍.在其他支持WebGL的浏览器上也发现了同样结果,这将提高许多游戏的性能. 微软最新发布的浏览器IE11打破常规,开始支持WebGL——尽管其基础是微软DirectX的宿敌OpenGL.最近,微软承诺将开放 IE标准的诸多信息,这表明他们的确在非常认真的对待此

如何在linux中执行一个脚本

---恢复内容开始--- 如何在LINUX中在系统启动时自动执行一个执行脚本 如果是开机马上执行的脚本,可以将脚本写到rc.local中: 如果是用户登录后自动执行脚本,可以将脚本写到相应的用户目录下"-/.bash_profile",若脚本"-/.bash_profile"不存在,可以直接拷贝"/etc/profile"命名为"-/.bash_profile": 如果是要任一用户登录后自动执行脚本,可以将脚本写到"

如何在.Net中使用Redis

Redis是一个key-value存储系统.和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表).sets(集合)和zsets(有序集合)几种数据类型.这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的. Redis的代码遵循ANSI-C编写,可以在所有POSIX系统(如Linux, *BSD, Mac OS X, Solaris等)上安装运

如何在iOS中使用libxml

本篇文章简单介绍如何在iOS中使用libxml Mac OS版本:10.8.2 XCode版本:4.5.1 1. 选择xcode工程设定 2. 选择target 3. 选择Summary 4. 拉到Linked Frameworks and Libraries的地方,按下+按键 输入libxml并选择libxml2,按下Add按键 如此便可在工程中看到libxml2.dylib 如同第一张图中,改选到Build Setting 往下拉找到Search Paths在里面找到Header Searc