`
xhload3d
  • 浏览: 208500 次
社区版块
存档分类
最新评论

从IE6到IE11上运行WebGL 3D遇到的各种坑

阅读更多

这篇《基于HTML5的电信网管3D机房监控应用》基于WebGL技术的应用让少同学对HTML5 3D的应用产生了兴趣和信心,但有不少网友私信询问WebGL如何运行在老的IE678910浏览器的问题,毕竟作为企业应用,用户的机器运行着各式各样的办公及业务系统,有PB/Delphi之类的老CS应用,有安装了dll和ActiveX的各种安全认证和视频监控的插件,有装着flash或svg插件的flex和SVG应用,当然还有支持IE6却不支持任何非IE浏览器的各种OA办公软件,眼看着XP操作系统即将寿终正寝,结果还成了国内各家安全公司的新商机《围猎XP:谁在瞄准商机》,你说升级机器系统谈何容易?

对于我们无力要求升级的IE678910上要跑WebGL,我们只能采用Google Chrome Frame的解决方案,虽然该插件Google从2014年1月份起就不再维护更新了,但已经发布的版本也是31了,这个版本的WebGL功能已经足够完善了,当然这样的解决方案也一箭双雕的解决了2D的Canvas问题。

安装完该插件后,在你需要采用WebGL的页面增加一行<meta http-equiv=”X-UA-Compatible” content=”chrome=1″>代码即可,或者从服务器下发该页面是对HTTP头增加X-UA-Compatible: chrome=1的参数即可。

使用Google Chrome Frame还需要注意一下几点:

可采用嵌入OBJECT元素的解决方案,绕开Google Chrome Frame不支持iframe的问题

<OBJECT ID="ChromeFrame" WIDTH=500 HEIGHT=500 CODEBASE="http://www.google.com"
        CLASSID="CLSID:E0A900DF-9611-4446-86BD-4B1D47E7DB2A">
    <PARAM NAME="src" VALUE="http://www.google.com">
    <embed ID="ChromeFramePlugin" WIDTH=500 HEIGHT=500 NAME="ChromeFrame"
        SRC="http://www.google.com" TYPE="application/chromeframe">
    </embed>
</OBJECT>

以上是我使用Google Chrome Frame解决老IE浏览器遇到的一些坑的解决方案,如果你还遇到其他问题可参考Google Chrome FrameDeveloper Guide 和Troubleshooting 。

还好,我们遇到的不少项目还是允许购买新机器或者升级新浏览器系统的,但这并不以为这能上IE11就问题结束了,微软这哥们对新标准的支持要嘛落后半拍,要嘛明知标准就这样我TMD的就不实现你能咋地,相信preserve-3d的CSS3功能让多少人欣喜诺狂,的确如果CSS3的3D功能各家浏览器能好好实现很多应用也就没WebGL啥事了,例如著名的famo.us 的经典元素周期表例子,尼玛的IE使用者就无福享受,看看以下MS人的话,我知道preserve-3d是w3c标准,老子就不实现,想用的自己搞蹩脚的解决方案绕道:

http://msdn.microsoft.com/en-us/library/ie/hh673529(v=vs.85).aspx
Note The W3C specification defines a keyword value of preserve-3d for this property, which indicates that flattening is not performed. At this time, Internet Explorer 10 does not support the preserve-3d keyword. You can work around this by manually applying the parent element’s transform to each of the child elements in addition to the child element’s normal transform.

CSS3的问题下回再扯淡,那是个无穷无尽的话题,回到我们的号称支持WebGL的IE11,至从一年前有人泄露IE11将支持WebGL就引得业界一片兴奋,千呼万唤始出来后居然还有那么多缺陷,但终归还是大好事,迈出第一步是最难的,相信微软会慢慢完善,但毕竟活在当下的我们还得继续填Shading Language上的几个坑:

1、lineWidth不让设置,只支持1个像素的连线,只能用一个像素将就着,或者把线采用构建模型的重方式来替代

2、Stencil buffers还不支持,clearStencil之类的函数就不要考虑用了

3、TRIANGLE_FAN类型不支持,这个还好办,改用TRIANGLES替代顶多增加点顶点数据

4、不支持return语句,你妹的这个问题让我苦苦找了半天才发现,只能改变代码逻辑不用return的方式

目前我遇到的就这些坑了,有摔倒在其他坑的同学可以继续补充,采用threejsbabylonjsHightopoHT for Web等3D引擎封装的框架自然都会帮我们应用层屏蔽这些坑,但相信很多引擎并还未对IE11做考虑,毕竟这哥们市场占有率还不高,等足够高了值得考虑时也许微软自己已经填补好了坑,无需我们再操心了,但已微软发布新浏览器版本的节奏,我只能说我们有生之年肯定等得到。

 
 
 
1
5
分享到:
评论
2 楼 xhload3d 2014-03-11  
px96004 写道
坑是注定的了。
悲剧是注定的了。
话说webgl挑显卡的。。
为楼主默哀。。。
捣腾出来也真不容易。。。。

挑显卡的情况到没遇到过,除了上面这些问题外WebGL还是基本让人放心的
1 楼 px96004 2014-03-11  
坑是注定的了。
悲剧是注定的了。
话说webgl挑显卡的。。
为楼主默哀。。。
捣腾出来也真不容易。。。。

相关推荐

    SuperMap-webgl3D vue示例demo

    通过运行这个示例项目,开发者可以学习到如何设置和使用SuperMap的WebGL接口,如何结合Vue.js的生命周期方法和数据绑定来实现地图的动态交互,以及如何组织和架构一个复杂的前端GIS应用。此外,对于想要深入了解...

    WebGL for IE 软件

    然而,Internet Explorer(IE)浏览器原生并不支持WebGL,这使得许多依赖这项技术的现代网页应用在IE上无法正常运行。为了解决这个问题,"WebGL for IE"这样的软件应运而生。这款软件是一个插件或扩展,旨在为旧版本...

    WebGl的3D空间

    WebGL的核心是顶点着色器和片段着色器,这两个着色器程序运行在GPU上,负责处理3D坐标变换、颜色计算和像素渲染。 1. **顶点着色器**:负责接收顶点数据,进行坐标变换(如平移、旋转、缩放),并输出屏幕坐标。在...

    基于WebGL实现3D图片特效

    【基于WebGL实现3D图片特效】是一种利用现代网页技术为用户提供交互式3D体验的方法。WebGL(Web Graphics Library)是JavaScript API的一种,它允许在浏览器中进行硬件加速的三维图形渲染,无需任何插件。这个特效的...

    HTML5 WebGL 3D 仓储管理系统

    借助WebGL,我们可以将3D图形无缝集成到网页中,提供沉浸式的用户体验。 在3D仓储管理系统中,WebGL扮演了核心角色,它使得开发者能够构建真实的仓库环境。用户可以通过旋转、平移和缩放视角,查看仓库内的每个角落...

    webGL3D机房模型

    WebGL是一种在网页上实现3D图形渲染的技术,它基于OpenGL标准,并且完全用JavaScript编写,无需任何插件。在“webGL3D机房模型”这个项目中,开发人员利用WebGL的强大功能,创建了一个交互式的3D机房演示。这个Demo...

    WebGL 3D雪花飘落动画特效.zip

    【WebGL 3D雪花飘落动画特效】是一种利用JavaScript和WebGL技术在网页上实现的视觉效果。WebGL(Web Graphics Library)是基于OpenGL标准的JavaScript API,它允许开发者在浏览器环境中创建交互式的3D图形,无需插件...

    【3D模型】webGL人体3D动态模型

    【3D模型】WebGL人体3D动态模型是一种在网页端实现的三维人体动画技术,它基于WebGL(Web Graphics Library)这一强大的图形渲染API,允许用户在浏览器中无需插件即可体验高质量的3D图形展示。这个模型特别之处在于...

    unity webGL端 运行服务器

    Unity WebGL 是Unity游戏引擎的一个重要平台目标,它允许开发者将Unity创建的游戏或应用程序发布到Web浏览器上运行,无需用户下载安装任何插件。这个技术基于WebGL标准,这是一种在网页上呈现交互式2D和3D图形的开放...

    个人在北大青鸟做的WebGL3D网页

    在北大青鸟的课程中,学员们可能会学习到如何设置WebGL上下文,使用缓冲区管理顶点数据,以及如何处理纹理和深度测试等核心概念。 3D网页项目中的文件可能包含HTML文件、CSS样式表、JavaScript源代码,以及可能的...

    基于WebGL实现的3D曲面图表组件

    WebGL是一种在浏览器中支持硬件加速的3D图形渲染标准,它允许开发者无需安装任何插件即可在网页上展示复杂的3D图形。 该组件的核心知识点包括: 1. **WebGL基础**:WebGL是基于OpenGL ES 2.0的JavaScript API,...

    webgl 开发3d

    WebGL已经成为创建复杂Web应用程序和游戏的强大工具,它利用GPU加速图形渲染,使得在Web页面上渲染高质量的3D场景成为可能。 WebGL的技术定义是这样的,它是一个无版税、跨平台的API,将OpenGL ES 2.0带到网页上,...

    unity3d webgl播放视频 自用备份

    2. **视频资源处理**:Unity3D支持多种视频格式,但并非所有格式都能在WebGL平台上运行。OGV是一种开放源代码的视频格式,通常用于Web上的流媒体,因为它具有良好的跨浏览器兼容性。你需要将你的视频文件转换为OGV...

    webgl-3d-helloworld

    在标签中,“webgl”强调了项目所使用的图形库,“3d”表示项目涉及3D图形,“javascript”明确了编程语言,“helloworld”通常是指初级教程或示例项目,“demo”则表明这是一个可以运行的实例。这些标签有助于理解...

    Unity3D如何导出为webGL--教程.zip

    本教程将详细讲解如何使用Unity3D将项目导出为WebGL格式,以便在网页上运行。 1. **Unity3D导出设置** 在Unity3D中,选择"File" &gt; "Build Settings"打开构建设置窗口。在这里,你会看到不同的目标平台选项,包括...

    HTML5+CSS+WEBGL网页3D游戏开发

    8. 优化性能,确保游戏在各种浏览器上流畅运行。 通过这个教程,你不仅会掌握HTML5、CSS和WebGL的基础知识,还能学会如何将这些技术融合在一起,打造出具有专业水准的网页3D游戏。不论你是初学者还是有经验的开发者...

    Unity 3D Video Player WebGL

    Unity 3D支持导出到WebGL格式,这使得开发的项目能够在任何支持WebGL的浏览器上运行,包括Windows、MacOS、Linux,甚至是移动设备上的现代浏览器。 为了在Unity中实现WebGL的3D视频播放,首先需要在项目中导入Video...

    Unity通用WebGL模板Universal WebGL Template 1.2.1

    Unity通用WebGL模板Universal WebGL Template 1.2.1是一个专为开发WebGL游戏或应用程序设计的工具。...通过深入理解和充分利用这个模板,开发者能够创建出引人入胜且在各种浏览器上流畅运行的WebGL游戏和应用程序。

    HTML5 WebGL酷炫3D旋转星云动画特效

    其中,WebGL是一项让浏览器支持硬件加速3D图形渲染的技术,无需任何插件,用户可以在浏览器上直接体验丰富的3D效果。在这个"HTML5 WebGL酷炫3D旋转星云动画特效"项目中,我们将探讨如何利用JavaScript(JS)和CSS来...

Global site tag (gtag.js) - Google Analytics