OpenGL 编程/3D/历史
IrisGL 是一种专有的图形 API,是 OpenGL 的前身。由当时计算机图形市场领导者硅谷图形公司 (SGI) 开发的 IrisGL 被用作计算机图形开放标准的起点,该标准通过避免直接硬件访问来节省应用程序移植时间。SGI 清理了 IrisGL 并将其标准开放给其他公司后,OpenGL 诞生了。
1992 年,OpenGL 架构审查委员会 (OpenGL ARB) 成立。OpenGL ARB 是一个公司组成的团体,负责维护和更新 OpenGL 标准。
Android 扩展包[1] 是 Google 标准化的 OpenGL 扩展子集,超出了 OpenGL 3.1 规范中描述的核心集。它激励设备制造商和驱动程序供应商提供这些扩展,随后激励开发人员使用它们。
本节是存根。 您可以通过扩展它来帮助维基教科书。 |
关于哪种实现比另一种更好,一直存在着巨大的争论,没有定论。这两个 API 都用于实现相同的效果,争论哪个更快或产生更好的结果是毫无意义的辩论。另请注意,Direct3D 是 DirectX 的一部分,将 OpenGL 与 DirectX 进行比较没有实际意义。
OpenGL 是一个开放标准,这意味着任何希望实现它的人都可以获得其详细信息。如 OpenGL 简介中所述,几个方面参与了 OpenGL 的发展。Direct3D 是专有软件,这意味着其所有者(微软)是唯一拥有其详细信息的人,也是唯一能够改变其发展方向的实体。
OpenGL 是跨平台的。几乎所有计算机设备都实现了此 API。用 OpenGL 编写的图形引擎理论上可以在任何这些硬件(PC、MAC、游戏机、手机……)上运行。DirectX 仅限于微软。用 DirectX 编写的引擎只能在微软的操作系统上运行。
在相同条件下,两种实现都将以相同的速度运行,因为它们都由相同的图形驱动程序实现。任何性能差异都是基于有缺陷的图形驱动程序,而不是 API 本身。通常,比较在 Windows 上使用 Direct3D 运行的游戏(如《敌军总部》或《虚幻》系列)和在 Linux 上使用 OpenGL 运行的游戏,会发现其中一个比另一个运行更快,但这并非有效的比较,因为运行测试的环境不同。
这就像说除了微软的操作系统之外,不会再有其他操作系统。只要有几个操作系统(不仅仅是计算机),OpenGL 就将存在。
同样,两种实现都依赖于图形驱动程序。两种实现都将始终在相同硬件上具有相同的功能。
这个是真的。
- OpenGL 性能编程,Eskil Steenberg。
- 一个简单的单文件 OpenGL 示例的集合,Jakob Progsch
- 接近零驱动程序开销,来自 Nvidia、AMD 和英特尔的工程师的联合演示,游戏开发者大会 2014
以上资源中的一些在今天已经过时了。
同样,这个是真的。首选(更快)的方法被称为“快速路径”。
你如何期望任何独立开发者有时间和资源来处理这种复杂情况?OpenGL之所以成功是因为它很简单,但在经过多年的企业干预后,它变成了DirectX。拥抱,扩展和消灭的最佳体现。—lennyhome
这是一个错误的解释。更实用的解释是,OpenGL 从一个高级的 3D 图形 API 变成了一个用于编程 GPU 的跨平台兼容层。从某种意义上说,现代 OpenGL 只是一个 2D API[2]。如果你是一名需要完整 3D API 的游戏开发者,直接使用 OpenGL 可能不适合你。相反,专注于你制作游戏本身的核心竞争力,并使用现有的游戏引擎(或更高层的图形 API,例如 three.js)来进行图形渲染和其他所有不构成你软件核心部分的方面。
2003 年发布了第一个 OpenGL ES 规范。OpenGL ES 是 OpenGL 的一个子集,专为移动电话、嵌入式设备和视频游戏系统而设计。
2004 年发布了 OpenGL 2.0 规范,包括 GLSL(OpenGL Shading Language)规范。
2008 年 8 月发布了 OpenGL 3.0 规范。