




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WebGL: 常见问题WebGL是什么?WebGL是一个low-level(这里是翻译成底层还是低级呢?我拿捏不好)的JavaScript API,这个API提供了一种能力使得网页上脚本和计算机图形硬件直接交互。这就让我们在浏览器里创建,实时运行3D图形成为可能,这是一种Web的标准,(运行的浏览器)不需要另外装插件,不久以后这种技术会被越来越多的智能手机所支持。许多人把WebGL当做HTML5的新技术。WebGL由Khronos管理维护,Khronos是一个向许多其他标准的负责的机构,包括很多人知道的OpenGL开发库,和比较少人知道的运行在嵌入式设备上的“embedded”版本OpenGL ES,WebGL就是基于OpenGL ES的。我怎么让WebGL运行在本地机器上?首先,需要一个支持WebGL的网络浏览器版本,比如Firefox,chrome,Safari。如果我使用微软的IE怎么样?到目前写这篇文章的时候,微软还没有宣布任一个版本的IE支持WebGL,他们即将发行的新版本IE 9宣布采用了许多现有的网页进行图形卡加速的技术,但是也没用新的技术WebGL。同时他们也没有明确说明要回避WebGL,这意味着似乎在短期内,他们打算支持这项技术。(同时要说明的是,以微软一贯的作风,他们似乎会推出一个不开放的图形卡加速系统,DirectWeb?)。总之,这意味着IE的用户目前无法使用WebGL,起码如果在非插件的标准版本IE下无法做到。有些人能改变自己的浏览器。对于那些习惯IE的用户,短期内有一个权宜措施,Chrome Frame是一个IE的插件,用来处理网页中的特殊渲染,使用Chrome渲染引擎替代普通的IE引擎。有点类似“JavaScript欺骗”,当你用IE打开一个网页的时候,后台使用Chrome渲染它,告诉用户Chrome是否要被使用。非IE用户正常的打开网页,不会受到什么影响。尽管Chrome Frame特征列表里目前还不支持WebGL,但是如果连Chrome都支持了WebGL,相信很快Chrome Frame同样也能支持。当然使用插件不是一个完美的解决方案,但总好过什么都不做。WebGL已经做好了作为一个产品的准备了吗?这个问题可以分成3个问题。WebGL的规格什么时候到达1.0版本?WebGL工作组还没用宣布一个日期,尽管他们很乐观这个时间已经不远了,如何你想知道确切的日期,请自己去GOOGLE。WebGL什么时候能成为浏览器里的一个标准?很有可能就在在1.0版本发行以后!什么时候有足够的人使用WebGL,并且能在网站上运用?这个自然取决于网民升级自己浏览器的的频率啦。上文里说过,IE的用户使用WebGL会遇到一点麻烦,需要插件解决。大部分Chrome用户可以在新版本发布出来以后一个月之内自动升级,Firefox用户的升级速度取决于使用最大版还是最小版。为什么当我查看WebGL网页时,CPU占用率100%?很多WebGL例子都会重绘画布,即使在画面没什么更新的情况下。所以当你抱怨为什么看一幅静止的图画时,CPU的占有率都会如此之高。这就是原因。你也许会怀疑CPU的高占用率,因为大部分工作不是都交给图形卡了吗?要回答这个问题有点复杂。首先WebGL渲染出来的图像都是放在HTML的画布(canvas)上,这个画布同时也要放置别的HTML元素。比如说,把一个HTML元素重叠在WebGL图像之上,WebGL图像包含了透明的比特位(和ALPHA类似)使得他覆盖的其他元素可以透明的显示。HTML图像和WebGL图像的混合过程,当前的浏览器都是用一种迂回的方法来完成,渲染出一幅WebGL图像的过程上在图形卡里完成,然后获得一个HTML图像的过程依据浏览器的不同而不同,最后,两幅图像的混合过程在CPU里完成。如果你有一张很大的HTML画布,又要在混合大量的图像,这些都在CPU里计算完成,结果就会造成你的CPU占用率100%。好消息是浏览器的设计者已经意识到这个问题,希望不久的将来能得到解决。安全性怎么样?当说到“给予网页访问图形硬件的能力”时,许多人就开始讨论它的安全性。其实WebGL没有听起来的那么危险。相对于那些JavaScript扩展里能够暴露给黑客的安全漏洞来说,WebGL也没有什么特别不安全的。黑客可以写一个WebGL网页让你的图形卡停止对别的应用程序响应,这在Vista和Win7系统下是令人烦恼的,但不是灾难性的,因为操作系统可以检测到错误,然后重新设定你的图形卡。但是在Mac系统下,黑客有可能能够冻结你的屏幕。在Linux下可能发生的情况就依据你所用的显卡和驱动版本了,Intel为ATI显卡的驱动可以检测到显卡的错误,然后重新设定。目前NVIDIA的显卡驱动没有这种检测功能。Linux系统下的情况就是,当你显卡出现问题时,操作系统只是有可能重新设定显卡,这个问题将来可能能得到解决(通常Linux下的任何东西都比较糟,这不是我讲的!)。通过升级浏览器可能可以避免安全问题,但是除非在WebGL中,对程序员能够使用的3D图形功能做严格的限制,否则安全问题终究难以解决。写WebGL为什么编写WebGL程序这么难?WebGL是一个low-level的API,设计它时既要考虑访问能力从Javascript到底层的显示卡,兼容性既要考虑到配有NVIDIA或者ATI显卡的电脑,也要考虑一些掌上设备,例如智能手机,同时也要兼顾函数数量最少化,和数据类型最少化。尤其,WebGL是继承OpenGL ES(这是一个为移动设备削减的版本)而来。这是一个纯粹的可编程管道,没有什么固定的函数支持。早期的OpenGL库提供过剩的帮助函数方便初学者开始,但是专家基本上不用这些函数。抛弃这些帮助函数使我们的图形库更小,更简单,这对于应用到嵌入式设备上来说是一件好事,但是同时也增加了初学者开始的难度。有一个好消息,如果你不想去学习low-level的WebGL,你也可以选择一个high-level的作为替代。WebGL提供一个可靠的框架,保证能够运行在任何兼容的设备上,WebGL小组在努力,使之更独立于浏览器的实现,提供一个框架让程序员编程更简单,而且能够运行在所有支持WebGL的浏览器上。JavaScript会不会太慢了?建立在浏览器里面的JavaScript引擎越来越快了,但是对于应用数值型的计算来说,它还是太慢了,比如,你肯定不会像用JavaScript做一个物理引擎出来吧。如果你想要你的WebGL页面运行更快,有下面两种选择:1:尽可能的把东西都放进着色器里面去!着色器的代码一般都是运行在并行的图形卡上面,通常比你想象的还要快。例如,我们可以把场景拾取和碰撞检测的任务都交给着色器吧。2:如果可以,工作留给服务器端完成。为什么在JavaScript里,我不能编写着色器?WebGL的代码很有趣,在一个文件里,既有类似C的着色器语言,又有JavaScript语言。所以写这种代码生成3D图形是刺激的,同时也令人恼火。至少在未来几年里,编写着色器的语言中没有比GLSL(OpenGL着色语言)更好的了。因为图形硬件的处理器都都极端快,极端简单,所以编写的语言也要尽量简单,运行类似JavaScript这种动态语言基本上不可能。有可能比在普通CPU上运行更慢。最好的WebGL书是什么?目前还没有专门讲WebGL的书,不过既然WebGL是从OpenGL ES继承过来,那么OpenGL ES的书也可以作为程序员的指导书籍。1:OpenGL ES 2.0 Programming Guide2:iPhone 3D Programming - Developing Graphical Applications with OpenGL ES为什么我的纹理无法工作?NPOT问题。当你使用长和宽非二次幂(NPOT)的纹理时,这些一般都不会工作,在WebGL上也是。例如,100x100像素的图像一般不会工作;128x128会工作,类似的有128x512。从理论上讲4096x8192像素的纹理可以工作,但是你的客户可能会用完他们的图形卡上的记忆卡,尤其是当它们使用的是智能手机!翻转问题:如果您的纹理看颠倒了,他们很可能是.在一般情况下,人们往往用“T“轴坐标朝上,指定纹理的的三维模型.(t轴就是y轴)。这就是用“Y”轴指定使用在模型的顶点的位置轴。然而,由于历史原因,大多数图像格式是“Y“轴向下。这意味着你需要使用它们之前,围绕水平轴翻转图像。WebGL的第5课对这个做了更多解释。老式的ATI显卡驱动程序对于某些老旧的ATI显卡驱动,特别是与惠普电脑。您可能会发现,当您显示WebGL的页面的时候,图像不会出现,除非这些网页包括如下JavaScript代码:gl.enable(gl.TEXTURE_2D)该代码实际上是无效的WebGL,gl.enable不应该接受gl.TEXTURE_2D。然而,在某些图形驱动程序中有一个bug,所以为了让页面显示,我们必须加上这行代码。如果你能,你最好的办法是更新驱动程序。我怎样把大型顶点网格表示在浏览器中呢?如果你有一个很巨大的3d模型,而且想把它从web服务器传递到你自己的WebGL网页。一个好的建议是使用json格式的编码。毕竟在WebGL网页内部,作为javascript来处理他们。所以为什么不在server上把它转换成那种格式,然后用xmlhttprequest的方式来传送他呢?另外一种机制用到xml类似格式的就是COLLADA(这是一种面向交互式 3D 应用程序的基于 XML 的数字资产交换方案,使 3D 创作应用程序可以自由地交换数字资产而不损失信息 - 使多种DCC和3D处理软件包可以组合成强大的工具链管道)。但是解析xml格式并且把它转换成javascript的内部格式会比使用json慢。一些框架,例如O3D,支持一种在服务器端把COLLADA转换成JSON格式的服务器代理,便于客户使用。在WebGL里,units是以什么形式来定位顶点的?像素?可以是你想的任何东西。unit在在距离为z可能是10个像素宽,但在距离2z的相同的对象将是5个像素宽,因为近大远小的缘故。我们使用非特定的单位,使我们有一个统一的衡
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瓶子课件教学课件
- 转让协议房屋债权转让协议2篇
- 安全施工培训资料教学课件
- 瑞安全日制培训中心课件
- 农业碳汇项目区域差异与优化布局分析报告
- 对工程的服务方案(3篇)
- 东莞常平工程防水方案(3篇)
- 球团安全培训心得课件
- 环保知识培训建议课件
- 猫的秘密课件
- (2025秋新版)二年级上册道德与法治全册教案
- 老挝药品注册管理办法
- 建设工程项目协同作业方案
- 问题解决策略:反思 课件 北师大版数学八年级上册
- 2025年国防竞赛题库及答案
- 鹿寨县城南水厂寨沙分厂建设项目环评报告
- 森林火灾应急处置
- GB/T 45972-2025装配式建筑用混凝土板材生产成套装备技术要求
- Inventor教案打印完整
- 秋冬季安全知识培训
- 《肥胖症诊疗指南(2024年版)》解读课件
评论
0/150
提交评论