Skip to content

计算机图形学

Linux 图形栈:一个像素的奇幻漂流

Abstract

在介绍 OpenGL 前,先了解一下 Linux 图形栈的组成或许更好。这样能够更好地理解 OpenGL 所处的位置及其作用。

Quote

底层 3D 图形库概述

Quote

总体上,这些图形库的关系如下:

graphics_api_history
3D 图形库的发展历史
Building New 3D Web Games With Cocos Creator and WebGPU - COCOS

OpenGL 与 Vulkan

总体来说,Vulkan 的设计理念更新,跨平台兼容性更好,对硬件的控制更细致,性能更高,是未来的必然选择。但 OpenGL 仍然有其优势,比如更简单易用,对于一些简单的 3D 游戏或应用,OpenGL 仍然是一个不错的选择。

目前,入门 OpenGL 最好的书本应该是 OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V,其中文版为 OpenGL 编程指南 (原书第 9 版)。如果要在 Windows 上进行开发,Computer Graphics Programming in OpenGL with C++ 提供了较为详细的 Windows 开发环境配置。

硬件支持情况

Khronos 开发的所有 API 都有 Adopter Program:如果某公司实现了 Khronos 标准的 API,则必须通过 Khronos 的一致性测试,才能使用相关标准的名字和标志。

此外,gpuinfo.org 是一个社区维护的 Khronos API 数据库。

OpenGL 支持

OpenGL 有许多变体和依赖,本节我们来梳理一下。

首先是 OpenGL 相关 API。OpenGL 标准开头就进行了梳理(见 1.3 Related APIs):

  • OpenGL 常见于桌面端,提供 Java、C、Python 绑定。
  • OpenGL ES 在 OpenGL 的基础上进行了增删,为嵌入式系统定制。
  • WebGL 基于 OpenGL ES,为浏览器定制,使用 JavaScript 调用。

在 OpenGL 规范之外,是具体的实现。

- GLFW(Graphics Library Framewor)为 OpenGL、OpenGL ES 和 Vulkan 提供桌面端的窗口管理、输入处理等功能。在 Linux 系统上,它支持 X11 和 Wayland。