OpenGL讲座稿_5. DirectX与OpenGL
DirectX是用途极为广泛的API,它并不局限于显示领域。目前的 DirectX中包含有Direct Graphics(Direct 3D + Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。但由于DirectX版本的更新主要在3D图形技术上,因此DirectX给人一种图形 API的感觉。
微软发布DirectX的初衷是为了弥补Windows系统对图形管理的不利,但第一代DirectX并未成功,因为当时OpenGL支持者众多,而初出茅庐的DirectX 1则显得稚嫩许多。
第二代DirectX在2D图形方面做了改进,加入了一些2D动态效果,采用了Direct3D的技术。3D应用程序接口采用”平滑模拟”和”RGB模拟” 两种模拟方式对3D图形进行加速计算。同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。整个DirectX的设计架构基本确定,它也是如今的DirectX的雏形。
1997年3D概念进入游戏界,DirectX 3推出了。DirectX 3版本是DirectX 2的简单升级版。
微软没有推出DirectX 4版本,直接推出了DirectX 5。DirectX 5对D3D的内容做了彻底修改,并且使游戏开发商们移植到他们的应用程序接口中更容易、更方便。除此之外,许多应用程序接口的细节部分也得到了改进。加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,还加入了S3的纹理压缩技术。同时,DirectX 5在其它各组件方面也有加强。
DirectX 6推出时,已被绝大多数厂商认可并成为实际上的主打游戏API。在这一版本的DirectX中,加入了双线性过滤、三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐走入成熟阶段。
DirectX 7的推出伴随着产生了一个GPU的概念,同时在DirectX 7加入了硬件几何转换与光源处理(T&L)技术。虽然OpenGL中已有相关技术,但此前从未在民用级硬件中出现。GPU实际上是一组图形函数的集合,而这些函数由硬件实现,主要用于处理3D游戏中物体移动时的坐标转换及光源处理。硬件T&L的出现一定程度上将CPU解放出来。这一方面提高了整个系统的工作效率,另一方面则让显卡在一定程度上摆脱了CPU的束缚。
DirectX 8的出现全面赶超OpenGL。在DirectX 8中,硬件T&L被Vertex Shader和Pixel Shader取代。VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。这意味着程序员可通过它们实现3D场景构建的难度大大降低。VS和 PS在游戏中带来的最大改变就在于水面的效果。
DirectX 8中的Shader单元还是个简单尝试, DirectX 9中的Shader则成为了标准配置。除了版本升级到2.0外,DirectX 9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。尽管新的PixelShader(象素着色引擎) 还不支持流程控制,但最大指令数增加到了160条。在DirectX9里,顶点着色编程比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的VertexShader指令增加到了1024条。尽管新的象素着色还不支持流程控制,但最大指令数增加到了160条。 DirectX9真正关键的特性是64位RGBA色彩(每种颜色信道16位整数)和128位浮点精度(每种颜色信道32位浮点数)。颜色精度的巨大增加将带来让人震惊的视觉效果和图像质量。
预计在2005 年推出的DirectX10将完全放弃GPU当中的固定渲染模式,并且支持GPU行为的完全自由化,即GPU不在明确划分像素着色和顶点着色单元,并且支持多种任务,如2D/3D/视频加速等等任务的自由分配。DirectX10将加入Shader4.0技术,并首度实现RayTracing光线追踪,将位移贴图Displacement作为标准之一。
DirectX 与OpenGL相比的优点:OpenGL仅专注于图形(特别是3D图形)的处理,并且有部分图像处理能力。而DirectX则主要针对游戏而设计的,不仅有图形方面的处理,还包含了图像、声音和音乐、输入设备等等。因此从开发游戏的角度来说,DirectX拥有绝对的优势。另一方面,OpenGL由(由多个成员组成的)ARB进行管理和维护,因此功能的增加和版本的升级受到如知识产权(IP)争议等诸多因素的限制。而DirectX是由Microsoft 独立开发和维护的,本身不存在知识产权的争议问题,升级和维护方面也能够得到Microsoft的积极支持,从双方版本的发展历程就可见一斑。
DirectX 与OpenGL相比的缺点:OpenGL由于其”开放性”而能够得到众多软硬件厂商的支持,同时它是跨硬件平台、跨操作系统、跨语言的,通用性非常广。而 DirectX则是”专为Windows下的游戏程序设计”的,在中低端民用平台上具有比较好的优势,但从整个图形处理领域来说,实力则与OpenGL相差很多。
from: http://kwun.blogbus.com/logs/19051218.html
标签:history, OpenGL相关日志
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.
