|
|
这是我自己翻译的以国外达人的书中的见解。觉得有点道理,当然这绝对没有任何技术含量。下面有原文。翻译不当之处望指正。
如果你们从未使用过它的话,OpenGL是另外一种的API。Silicon Graphics 的设计早在90年前为适用于他们的高端图形工作站被。它继承于数不清的平台和操作系统。在这些区域内已超出于游戏产业之外就像 simulation (模拟)和学术研究一样。OpenGL事实上是作为计算机绘图方面的标准。它是一个简单的、优雅的、快速的API。关于更多信息请查询 http://www.opengl.org
但它不是完美的。首先,OpenGL在这方面是大量的函数性的。制作接口这样简单的需求使编译器要照顾一些难以忍受的细节以确切的弄明白每一件工作。由于驱动方式是需要实施的,为了有一个完全的OpenGL驱动,每个公司制作的3D卡都要支持所有的OpenGL特征设定。这些驱动将是极其困难的被正确的实现。而且表现方面等同于在驱动的质量基础上硬件能胡乱的改变,另外,DirectX增加的优势能迅速的转换以适应新的硬件特征,DX由微软所约束(那一个好或者坏,依赖于你对它的理解)。当OpenGL需要扩张的时候需要委员会的评定。
我初步希望有源代码的两个版本——一个是关于Windows和Direct3D的,另一个是Linux和OpenGL的,最终是不可能的,所以我选择了一个或另一个,我选择Direct3D。
Why use Direct3D? Why not use OpenGL?
For those of you who have never used it, OpenGL is another graphics API. Silicon Graphics designed it in the early '90s for use on their high-end graphics workstations. It has been ported to countless platforms and operating systems. Outside of the games industry in areas like simulation and academic research, OpenGL is the de facto standard for doing computer graphics. It is a simple, elegant, and fast API. Check out http://www.opengl.org for more information.
But it isn't perfect. First of all, OpenGL has a large amount of functionality in it. Making the interface so simple requires that the implementation take care of a lot of ugly details to make sure everything works correctly. Because of the way drivers are implemented, each company that makes a 3D card has to support the entire OpenGL feature set in order to have a fully compliant OpenGL driver. These drivers are extremely difficult to implement correctly, and the performance on equal hardware can vary wildly based on driver quality. In addition, DirectX has the added advantage of being able to move quickly to accommodate new hardware features. DirectX is controlled by Microsoft (which can be a good or bad thing, depending on your view of it), while OpenGL extensions need to be deliberated by committees.
My initial hope was to have two versions of the source code—one for Windows and Direct3D and the other for Linux and OpenGL. This ended up not being possible, so I had to choose one or the other; I chose Direct3D.
|
|