本站新书推荐

 
 
 
公告
如果编译书中程序出现glut的库错误,请下载新的glut库。

 

OpenGL 2.0 - 为了解救可编程绘图而推出

(一) 可编程、可升级与可扩展

OpenGL与DirectX代表着绘图世界分裂的两派,这种情况有时会阻碍发展,有时却又对发展有所助益。随着新发展阶段的到来,这样分裂的状况似乎稍有缓和的迹象。

Microsoft(微软)和SGI(视算科技)这两家OpenGL的原始支持和培育者,曾一度试图将OpenGL并入DirectX中。这就是最终仍旧失败、短命的Fahrenheit计划。这个失败对业界来说的确是一大打击。他们最大的希望在于建立一个可运行于Microsoft之内和之外的通用API,这将让绘图的开发提升至一个共同的架构上。这似乎是个不可能的任务,而它也的确曾是如此。Microsoft被指为缺乏意愿、而SGI则因支持会导致不良结果的NIH(这可不是捏造的)环境而被批评。不管是什么原因,可能还包括一些容易出错的人为因素在内,Fahrenheit已经成为过去,Microsoft现在是顷其所有的开发资源,全力投入使DirectX成为高端绘图、与游戏开发API的工作上。

和OpenGL这种通过标准结构进行更新及改良的公开标准不同的是,DirectX是为了加强Windows应用程序的开发而发展的。

因为不用在标准的架构下运行、而且只是用来让Windows看起来更棒,DirectX也因而盛行起来。在此同时,由ARB架构检查委员会维护的OpenGL则是停滞不前,唯一的进展仅是OpenGL扩展指令的推出。这些扩展指令是一些绘图功能,像是ClearCoat、Multisample、视频及绘图的整合工具(某些是通过OpenML的努力而开发出来的,它本身属于OpenGL ARB扩展指令之一)。

不幸的是这些扩展指令,对大多数需要一致性开发平台的ISV(独立软件开发商,Independent Software Vender)来说并不实用。相反的,他们开发了一个混乱的扩展指令组,其中许多都是为专用应用程序而设计的。ARB已经发现为何无法将OpenGL往前推进的几个原因,包括IP(知识产权)争论的潜伏危机。正打算参与ARB(委员会的策划)并提供技术、但也同时保护他们IP的厂商大感挫折。为了试着协调这些利益冲突, ARB也就无暇思考OpenGL新技术的开发。尽管ARB过去几年来都运行的相当理想,但业界以及合并的脚步都产生相当剧烈的变化,这对ARB来说已经造成一种要跟上的新压力,更不用说来领导大家了。

事实上形势已经扭转过来了。通过比以OpenGL委员会为基础负担更少的设计方法, DirectX提出了许多OpenGL将来或许也会提出的例子。主要的创新就是将可能会把可编程能力纳入API中,尽管说离广为开发者所使用还有一段漫长的路要走,但对ISV及IHV(独立硬件供货商,Independent Hardware Vendor)来说都一样的具有吸引力。这表示将来的绘图开发只要任何有创造力的开发者想得到,所有的效果、外观和功能都可以通过主流的硬件与软件来获取。这也达到了「为CPU减负」这个大家所长期追求、经常承诺的目标。大部分也有在开发DirectX产品的OpenGL ARB成员厂商,都清楚的了解到OpenGL未来所拥有的有利条件 - 他们的产品将可跨硬件平台而使用。天啊,我认为这样比较不好。试试这个有许多OpenGL ARB的会员同时开发DirectX与OpenGL的技术。他们清楚的了解到OpenGL将来在跨硬件平台产品上所具有的优势。

然而在DirectX也有一个技术上的小问题,这在DirectX 8的发展上相当明显:另一方面,我们有Nvidia的DirectX 8及其可编程着色1.2版,以及Microsoft所指定、DirectX 8.1搭配可编程着色1.4版的ATI方法。这两种不同的方法都可运用可编程硬件,但却是通过不同的缓存器架构。这样的情况也不是ISV所乐见的。理论上,DirectX 9是计划以一种独立于硬件之外的方法来解决这样的问题。但是注意一下将DirectX 10更名为DirectX 9.1的举动,这代表着Microsoft的发展途径也并不如某些人所期待的那样一帆风顺。

此外藉由DirectX,Microsoft继续将需求量更高的消费性市场,列为比OpenGL所应用的专业性市场更优先的发展考虑。由于大多数专业性绘图应用程序开发商都较为保守,OpenGL对专业性市场产生相当大吸引力,甚至在Windows的操作系统上亦然。

如果你去年在Siggraph(美国数字图像协会)上丢出一块石头,你大概就会砸到一个认为Nvidia是藉由先说服Microsoft在DirectX 8中采用其技术,才因而得以充分运用硬件可编程能力的业界人士。Nvidia也提前开始培训开发商这些熟悉可编程新功能的使用方式。ATI(冶天)以他们自己的方法加入这场竞争,这使得问题越来越明显。ISV现在也表示赞成,因为他们非常清楚像绘图可编程能力这样关键的技术,若是被单一硬件厂商所操纵那会有多危险。此外,Windows这边怎么停下来了?

这样的争论也影响到了OpenGL,到目前为止已经有试图将可编程能力,通过扩展指令步骤带进API中的尝试。这也促使无数扩展指令的开发,而相同的硬件集中性问题也随之浮现,并和接踵而来的IP争议混在一块了。(定义了超过230个的OpenGL扩展指令。Nvidia的扩展指令文件达500页以上,而OpenGL 1.3规格书本身也才不过284页而已。)因此OpenGL正面对着不少严峻的考验。

尽管说今天OpenGL可以在芯片上实现,近来ARB也回过头来探讨,现有的芯片上有哪些功能是可以加以标准化的,几乎没有推动将来新工业标准的正向动力。由于OpenGL并不提供硬件独立的可存取新的可编程处理器,因此目前的方向是通过个别厂商的扩展指令,来揭开多重的硬件架构。然而,IP(知识产权)的威胁仍旧限制住这些扩展指令的被广泛采用。问题是:IP的争议究竟是造成缺乏进步的原因,抑或这不过只是更深层问题的一个症状罢了?


 

 
     
 
 
首页 | 下载 | 讲座 | 源码 | 邮购 | 联系
 

Copyright(C)1999-2002 www.OpenGLSource.com, All Rights Reserved
Email: Webmaster@OpenGLSource.com