Direct3D和openGL故事【转】
2016-01-25 16:25
281 查看
自1996年开始,3D API之战延续至今,并随着GPU程序的广泛应用而炮火渐希,淡出争论的焦点。如果非要论个输赢的话,应该是OpenGL绊倒了自己,以致大业未成。而OpenGL ES异军突起,反而要了OpenGL的老命。 战局的高潮起于2001年,为对抗飞速发展的D3D,迫于OpenGL社群的压力,OpenGLARB开始加快工作进程,于8月推出OpenGL 1.3规范,次年OpenGL ARB成立OpenGL2.0工作组,号称要实现超越D3D的下一代技术。中间发布了1.4和1.5两个过渡版本,几经波折,一直到2004年,OpenGL2.0规范才正式发布。而这时,已经时过境迁,大量新兴功能出现,在D3D吸取OpenGL的优点的同时,OpenGL的扩展也引入了一些D3D的功能模式,开发人员更多的是在和日新月异的扩展打交道,核心模块已经不是大家关注的焦点了。 ) Q% }5 Q OpenGL 2.0的最重要部分是一个新的架构,一方面精简掉原来冗余和过时的东西,一方面要充分和Shader结合。而最终的结果是在这两方面都不成功。# s& n: U/ c" i3 W; } 在精简方面,首先,提供对原有功能的兼容性支持虽然是好事,但大大冲淡了采用新架构的必要性,结果是实际应用的是包含了所有版本的功能集合,成了一个更大的包袱。虽然ARB又提出要制定Pure OpenGL 2.0,但为时已晚,Khronos Group的OpenGLES已经借嵌入式的大发展成为实际上的精简OpenGL。而且OpenGL 2.0的精简仍然保留了很多高端工作站的功能特性,远不如OpenGLES有吸引力。( x( }; M4 u- A 在集成shader方面,ARB内部似乎斗争得很厉害。3D Labs掌握2.0规范的主导权,出于高端背景,3DLabs似乎想把它的高端风格带入OpenGL,并想做产业的领头羊。nVidia已经有了CG,希望CG能成为OpenGLshader的标准。ATI在和nVidia做激烈的竞争,非常不愿看到CG成为标准,为了对抗而开发了自己的RenderMonkey。最终的妥协是他们由3DLabs带头花费2年重新创造了GLSL。有人认为nVidia虽然失败了,但它和ARB官僚体系的努力抗争依然精神可嘉。尽管各厂商纷纷表示支持GLSL,但对软件开发者而言,大家更喜欢成熟稳定兼容性好的CG。CG是跨平台的,而且其语法和D3D的HLSL非常类似,多数情况下不需修改就能通用。CG有丰富的工具支持,有丰富的文档和样例,有活跃的社区,并且可以和HLSL共享很多资源。GLSL还没诞生就确定要和成功的CG争夺用户。 2004年后,OpenGL的进程几乎再度停滞,致使PBuffer的问题困扰OpenGL用户3年之久。OpenGL2.0也是雷声大雨点小,几乎没听说过什么产品正式用了2.0,本来说会支持OpenGL的PS3也是用OpenGLES加CG。2006年3月,OpenGL ARB宣布,将于年底前将OpenGL交给Khronos Group管理。: r# P. i5 e3 G! ^ 有人说OpenGL终于可以脱离ARB的官僚管制,在Khronos Group的手下将会象OpenGL ES一样发扬光大。但是OpenGL的残局已经很难收拾,而且长于嵌入式领域的Khronos Group也未必对中高端图形API操作自如。 微软这一边也并非一番风顺,自2000年11月就发布了DirectX8,D3D的实用性已经大大增强,但升级移植的过程让开发者们倍感痛苦。而今,随着DirectX10的临近,开发者们又要痛一次。dotNet平台似乎给开发者们带来了希望,在有人仍在大肆诟病dotNet平台时,已有不少厂商发行了基于MDX(Managed DirectX)的游戏和应用。然而已经Beta的MDX2.0中途夭折,让不少急性子的开发者叫苦不迭。而后又传来WinFX的Media3D和XNA将缺省使用业界标准的右手系,让习惯了D3D左手系的开发者苦笑不得。 Direct3D vs OpenGL的尾声(转)真是凄惨,在某种程度上来说,程序员才是可以随时被人左右,玩弄于股掌之中。一开始学图形开发的时候跟了DirectX8,买了一些启蒙的书自己嚼。后来下了决心开始学OpenGL,并且一发不可收拾,一直用到现在早已荒废了DX知识。打从微软开始频繁地更新DX9的时候就觉得DX迟早有一天会有翻身的机会,现在看来这个日子已经来到了。感觉上微软那软件大哥大的实力还是显示出来了,无论是官方的帮助文档,还是业内的社区网站,都比较倾向DX(Gameres,Gamedev)。况且OGL的2.0版本已经和 Duke Nukem Forever 一样,成了Duke Nukem If Ever 的后续了。不知道是悲哀还是无奈,就个人来说自己早已没有当年的冲劲,在迷惑之余也只能静静地站在一旁隔岸观火,不再想掺一脚了,累。 |
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(734) | 评论(0) | 转发(0) |
0
上一篇:Telnet模拟HTTP请求【转】
下一篇:【转】printf格式控制(你所不知道的printf妙用)
相关热门文章
PostgreSQL 9.5新特性:IMPORT...
cocos2d-x简述与HelloWorld程...
expdp&impdp只导出表结构的方...
关于php的slow.log无法生效的...
nginx default跳转
A sample .exrc file for vi e...
游标的特征
IBM System p5 服务器 HACMP ...
busybox的httpd使用CGI脚本(Bu...
Solaris PowerTOP 1.0 发布
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- Direct3D和openGL故事【转】
- openGL library下载地址
- 【Hadoop】Hadoop0.20.2的安装
- linux下安装rz/sz
- openGL library下载地址
- 国外威客网站大盘点
- Hadoop 2.6.0 集群部署
- 国外威客网站大盘点
- Windows OS上安装运行Apache Kafka教程
- 可选参数Optional Parameters
- Linux 基础学习
- Top k 算法
- Linux系统上用Firefox浏览器访问Flash网站
- SHELL编程四剑客练习--find
- Centos 7 PHP7环境配置 LNMP
- 使用pageheap调试程序,监控内存
- Hadoop 与 Spark 和 HBase 常用配置参数总结
- apache如何配置多个虚拟目录
- Linux下修改swap的大小
- Centos 6.6搭建squid代理服务