在 Ubuntu 中安装 OpenGL2025年3月17日 | 阅读 12 分钟 OpenGL (Open Graphics Library) 开放图形库。它是一个跨平台、跨语言的 API(应用程序编程接口),用于渲染 3D 和 2D 矢量图形。通常,该 API 用于与 GPU(图形处理单元)协同工作,以实现硬件加速渲染。 SGI(Silicon Graphics Inc.)于 1991 年开始开发 OpenGL,并于 1992 年 6 月 30 日发布;该 API 在视频游戏、飞行模拟、信息可视化、科学可视化、虚拟现实和 CAD(计算机辅助设计)等领域得到了广泛应用。自 2006 年以来,OpenGL 一直由一个非营利性技术联盟 **Khronos Group**(图形技术标准联盟)负责管理。
此外,OpenGL 除了语言独立性之外,还是跨平台的。该规范并未定义有关维护和获取 OpenGL 上下文的主题,而是将其留给底层窗口系统的细节。出于类似的原因,OpenGL 专注于渲染,不提供与窗口、音频或输入相关的 API。 OpenGL 的开发OpenGL 并没有在积极的开发过程中。然而,在 2014 年至 2001 年之间,OpenGL 规范几乎每年都会更新一次,其中 2009 年发布了两个版本,2010 年发布了三个版本。最新的 OpenGL 规范 4.6 于 2017 年发布,并且仅限于在核心配置文件中添加了十一个现有的 EXT 和 ARB 扩展。 OpenGL 规范的新版本由 Khronos Group 发布,所有这些版本都扩展了 API 以支持许多新功能。所有版本的详细信息都由该组的成员(包括操作系统设计师、显卡制造商以及 **Google** 和 **Mozilla** 等通用技术公司)通过协商确定。 除了核心 API 所需的功能外,GPU 供应商还可以以扩展的形式提供额外的功能。扩展可以定义新的常量和函数,并且可以删除或放宽对 OpenGL 现有函数的限制。供应商可以利用扩展来公开自定义 API,而无需 Khronos Group 或其他供应商的整体支持,这极大地提高了 OpenGL 的灵活性。每个扩展都被收集在 OpenGL 注册表中并由其描述。 所有新版 OpenGL 引入的功能通常是由许多广泛实现的扩展的混合功能形成的,特别是 EXT 和 ARB 类型的扩展。 OpenGL 文档OpenGL 的架构审查委员会发布了一系列手册,其中包含已更新以跟踪 API 更改的规范。通常,这些手册通过其封面颜色来引用: ![]()
OpenGL 的相关库最早的 OpenGL 版本附带一个名为 GLU(OpenGL 工具包)的伴随库。它提供了有用且简单的功能,这些功能很少在新硬件上得到支持,例如镶嵌和生成基本形状以及 mipmap。GLU 规范最后一次更新是在 1998 年,并且依赖于 OpenGL 的功能,而这些功能现在已被弃用。 窗口和上下文工具包 鉴于创建 OpenGL 上下文是一项复杂任务,并且它在不同操作系统之间有所不同。自动创建 OpenGL 上下文已成为许多用户界面和游戏开发库(包括 Qt、FLTK、SFML、Allegro 和 SDL)的基本功能。 一些库专门用于创建支持 OpenGL 的窗口。第一个这样的库是 GLUT(OpenGL 工具包),后来被 freeglut 取代。一个新的替代方案是 GLFW。
扩展加载库 一些库已被开发出来,可以自动加载所有可用的函数和扩展,因为识别和加载 OpenGL 扩展涉及大量工作。例如 glbinding、GLEW(OpenGL 扩展库)和 GLEE(OpenGL 简单扩展库)。此外,几乎所有的语言绑定,如 **PyOpenGL** 和 **JOGL**,都会自动加载扩展。 实现 Mesa 3D 是一个免费的 OpenGL 实现。它可以进行真正的软件渲染,并且可以通过利用直接渲染基础设施(Direct Rendering Infrastructure)在 Linux、BSD 和其他平台上利用硬件加速。截至 20.0 版本,它实现了 OpenGL 标准的 4.6 版本。 OpenGL 历史在 1980 年代,开发能够与各种图形硬件兼容的应用程序是一项真正的挑战。应用程序开发者为所有硬件编写自定义驱动程序和接口。这既昂贵又费时。 到 1990 年代初,SGI(Silicon Graphics)在 3D 图形领域处于领先地位。与基于开放标准的 PHIGS 相比,其 IRIS GL API 的使用更为广泛。这是因为 IRIS GL 被认为易于使用,并且得到了即时模式渲染的支持。相比之下,PHIGS 被认为过时且功能难以使用。
OpenGL 版本历史第一个 1.0 版 OpenGL 由 Kurt Akeley 和 Mark Segal 于 1992 年 6 月 30 日发布。此后,OpenGL 偶尔通过发布新的规范版本来开发。这些版本描述了每个符合要求的显卡应支持的基本功能集,并在此基础上更容易编写新的扩展。所有新的 OpenGL 版本倾向于与许多在显卡供应商中普遍支持的扩展进行交互。然而,这些扩展的细节可能会有所修改。 ![]() OpenGL 2.0 最初,OpenGL 2.0 版本由 3Dlabs 开发,旨在解决 OpenGL 所缺乏的方面并使其朝着一个有力的方向发展。3Dlabs 宣布了对该标准的几项重大补充。当时,其中大部分未被 ARB 接受,或未以 3Dlabs 宣布的方式实现。然而,他们关于 C 风格着色语言的声明最终得以完成,从而形成了 GLslang 或 GLSL(OpenGL 着色语言)的最新形式。 OpenGL 3.0 和 Longs Peak 在 OpenGL 3.0 发布之前,新版本代号为 Longs Peak。在其实际宣布时,Longs Peak 被描述为 OpenGL 历史上第一个重大 API 版本。它包含对 OpenGL 操作方式的重大改革,要求对 API 进行根本性修改。 OpenGL 3.0 OpenGL 3.0 版本定义了一种弃用方法,以简化后续的 API 版本。通过窗口系统声明一个前向兼容上下文,可以将标记为已弃用的功能完全禁用。然而,通过声明一个完整的上下文,仍可以通过这些已弃用的功能访问 OpenGL 3.0 的功能。
Open 3.1 OpenGL 3.1 版本完全删除了 3.0 版本中所有被弃用的功能,但保留了宽线例外。从这个版本开始,无法使用完整上下文使用新功能,也无法使用前向兼容上下文使用已弃用的功能。如果实现支持该扩展(即 ARB_compatibility),则对上述规则进行扩展,但这不能保证。 Open 3.2 OpenGL 3.2 版本通过将规范分为兼容配置文件和核心配置文件,进一步发展了 3.0 版本定义的弃用方法。兼容上下文包含固定功能和先前已移除的 API,与 3.1 版本 OpenGL 发布的 ARB_compatibility 扩展相同,而核心上下文则不包含。此外,OpenGL 3.2 版本包含对 GLSL 1.50 版本的升级。 OpenGL 3.3 Mesa 支持 softpipe、软件驱动 SWR 和使用 NV50 的旧 Nvidia 显卡。 OpenGL 4.0 OpenGL 4.0 版本与 3.3 版本一起发布。它为支持 Direc3D 11 的硬件而开发。与 OpenGL 3.0 版本一样,此 OpenGL 版本包含一些相对不重要的扩展,旨在充分披露 Direc3D 11 级硬件的功能。最受影响的扩展如下: 硬件支持: AMD Radeon HD 5000 系列及更新型号,Nvidia GeForce 400 系列及更新型号,Intel Ivy Bridge 处理器及更新型号的 Intel HD Graphics。
OpenGL 的替代实现Apple 在 macOS 10.14 Mojave 和 iOS 12 中弃用了 OpenGL,转而支持 Metal。然而,截至 macOS 13 Ventura(包括 Apple Silicon 设备),OpenGL 仍然存在。4.1 版本是自 2011 年以来 OpenGL 支持的最高版本。通过 MoltenVK,可以使用 MoltenGL 库将 OpenGL 调用转换为 Metal。 有许多项目尝试在 Vulkan 之上实现 OpenGL。Google 在 2020 年 7 月通过 ANGEL 的 Vulkan 后端实现了 OpenGL ES 3.1 的兼容性。此外,Mesa3D 项目包含一个名为 Zink 的驱动程序。 OpenGL 未来Apple 于 2018 年 6 月在其所有平台(tvOS、macOS 和 iOS)上弃用了 OpenGL API,强烈鼓励开发者使用其于 2014 年宣布的 Metal API。只有 Google 的 Fuchsia 和 Stadia 支持 Vulkan。id Software 于 2016 年发布了 id Tech 6 游戏引擎的更新,支持 Vulkan,同时保留对 OpenGL 的支持。ID Tech 7 已移除 OpenGL 支持。 Valve 于 2021 年 9 月 17 日宣布将在未来的更新中从 **Dota 2** 中移除 OpenGL。在三星的支持下,Atypical Games 更新了游戏引擎,使其能够利用 Vulkan 而不是 OpenGL,几乎支持所有非 Apple 平台。与 Vulkan 相比,OpenGL 不支持光线追踪,而光线追踪是 GPU 中用于视频解码的 API。Mesa 着色器仅支持 nVidia。OpenGL 不支持使用深度学习的抗锯齿算法 - AMD FSR(FidelityFX Super Resolution)和 Nvidia DLSS。 在 Ubuntu 上安装 OpenGL首先,我们将打开终端窗口,并使用以下命令更新包存储库。 现在,我们将在终端窗口中运行以下命令。 ![]() 下一个主题Let's Encrypt Ubuntu |
我们请求您订阅我们的新闻通讯以获取最新更新。