glTF/glb 查看器教程

本教程的目标是通过创建 glTF 3D 查看器来教您 OpenGL。

添加图片注释,不超过 140 字(可选)

为什么是观众?

编写 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 的编译器)。