CSDN博客

img houdy

OpenGL之OpenGL Extensions(续)

发表于2004/10/8 9:35:00  1517人阅读

分类: 计算机图形学

在了解了OpenGL的扩展机制以后,我又想到了一个新的问题:在OpenGL中,若某些特性硬件没有实现,能否用软件实现?Direct3D为我们提供了一个"硬件抽象层(Hardware Abstraction Layer",通过这个层,完全将应用程序和硬件层隔离开来,应用程序可以调用Direct3D提供的任何接口(要知道Direct3D使用COM实现的),完全可以不用考虑硬件条件。若硬件支持这个特性,怎用硬件完成,否则用软件完成。不知道OpenGL是否也有这样类似的机制?
要弄明白这个问题,首先应该明白OpenGL Specifications,OpenGL Implementations, OpenGL Extensions之间的关系。OpenGL Specification是由OpenGL Architecture Review Board(OpenGL ARB)这个组织来维护,它实际上是OpenGL标准化的产物,即指定OpenGL在整个行业通用的一个标准。不同的组织和个人都可以根据OpenGL Specification来编写自己的OpenGL Implementations,即不同版本的OpenGL API。随着OpenGL Specification的不断更新,新的特性不断的加入到其中,OpenGL Implementations也应该随着OpenGL Sepcifiation的更新而不断的更新,可是情况并不是这样的。我想,有部分原因是OpenGL API的编写者自己的原因,例如我们常见的OpenGL API是Windows平台上的OpenGL实现,Microsoft为了推广自己的DirectX,当然对更新OpenGL API没有多大的兴趣。更重要的原因在于实用性的考虑:OpenGL Specification中的新特性越来越复杂,运算量越来越庞大,纯用软件实现,没有多大实际的意义(比如说,渲染一帧需要10分钟,你还会看么?),所以硬件厂商提出了"硬件加速(Hardware acceleration"的概念,用硬件来完成庞大运算量的渲染过程,硬件产品的不断更新,不断的给我们带来视觉上的冲击。
而OpenGL灵活的扩展机制使我们很容易的在程序中使用任何硬件提供的新特性(即使这些新特性并没有出现在OpenGL Specification中)。我们当然可以不断的更新OpenGL API,使之满足最新的OpenGL Specification,但是这样做的实际意义不大,从实用性的角度考虑,只用实现一个OpenGL基本框架就可以了,可以通过OpenGL的扩展机制使用那些由硬件完成的特性。这想我应该是为什么大家对更新OpenGL API没有多大的兴趣的原因。这样想想,Microsoft迟迟不更新Windows平台上的OpenGL API的"罪"可以减轻一点:)。

注:
MESA是一个开源的3D图形库,有着和OpenGL一样的API,但是它不是OpenGL.它不断的更新来符合最新的OpenGL Specification,最新的版本达到6.2,实现了OpenGL Specification 1.5。MESA用软件实现了Specification中的特性,并不需要有相应的硬件支持,所以当你想实验某个扩展而你的显卡又不支持的时候,可以用MESA实现,当然效率上会有很大差别的。MESA的官方网站是:www.mesa3d.org 。

-----------------------------致力于多媒体技术,成为有思想的软件工程师------------------------

此文章为我原创作品,若要转载,请和本人联系,或注明出处。
欢迎大家对文章内容提出宝贵意见,同时希望大家及时指出文中的错误之处,这样我可以及时更正。
我的联系方式:
QQ: 7578420
Email: jerrydong@tom.com

----------------------------------------------------------------------------------------

阅读全文
0 0

相关文章推荐

img
取 消
img