为什么是观众?

编写 3D 查看器代码以学习 OpenGL 具有以下几个优点:

  • 适应学习难度级别
  • 专注于 3D 渲染
  • 如果您从事 3D 编程工作,获得的知识可能会很有用
  • 使用新的渲染技术轻松扩展
  • 可以成为您的 3D 中心,尝试新事物、构建原型等。
  • 比绘制立方体和球体更有趣

什么是 glTF ?

glTF 是 Khronos Group 指定的一种文件格式。他们还负责 OpenGL 规范。

以下是托管规范的官方 glTF 存储库的直接引用:

glTF (GL Transmission Format) 是一种免版税规范,用于应用程序高效传输和加载 3D 场景和模型。glTF 可最大程度地减少 3D 资源的大小,以及解压缩和使用这些资源所需的运行时处理。glTF 为 3D 内容工具和服务定义了一种可扩展的通用发布格式,可简化创作工作流程,并支持跨行业内容互作使用。

我们的目标是使用 OpenGL 和 C++ 来制作加载 glTF 文件的查看器。

为什么选择 glTF ?

有许多 3D 文件格式,新开发人员通常从 OBJ 文件格式开始。glTF 现在似乎是更好的候选者,原因如下:

先决条件

本教程假定您已具备以下知识:

  • OpenGL 3+您应该知道什么是缓冲区对象、顶点数组对象、纹理、着色器。本教程将解释如何创建和作这些对象,但不会深入探讨有关它们的详细信息。我将链接 wiki 或文档页面,详细解释这些概念。
  • C++您应该熟悉基本的 C++ 语法和语义,能够编写函数或类等。我将根据需要介绍更高级的概念。如果您认为有什么不清楚的地方,请随时与我联系,我将更新教程以提供更多详细信息。

我们要学到什么?

本教程涵盖了 OpenGL 和 C++ 开发的许多方面,但也涵盖了代码版本控制和与 Git 的协作。以下是我们将介绍的概念列表:

  • 在 Git 存储库上进行 Fork、克隆和协作
  • 使用 CMake 编译 C++ 项目
  • 创建图形应用程序
  • 了解和作 glTF 格式
  • 使用 OpenGL 渲染由 glTF 文件描述的 3D 场景
  • 相机控制
  • 简单的定向照明
  • 基于物理的材质渲染

操作系统

本教程是为 Linux 和 Windows 编写的。我的开发作系统是 Windows,因此您可能会发现 Linux 存在一些小问题。

在 Linux 上,我使用 gcc,在 Windows 上,我使用 Visual Studio Community 2019(更具体地说,我使用 Visual Studio Code 进行代码编辑,并且仅使用 Visual Studio Community 2019 的编译器)。