本教程的目标是通过创建 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:数据布局紧密遵循 OpenGL 存储数据的方式以及渲染的方式
-
Khronos 提供了一个包含许多示例模型的存储库来测试我们的应用程序
-
还有一个示例在线glb/gltf查看器,用于查看示例模型。它的源代码是可用的,因此如果我们没有预期的结果,我们可以将我们的代码与其代码进行比较。
-
glb官网 是一个共享 3D 模型的平台,建议将其所有模型自动转换为 glTF。许多模型都是免费的,因此它为我们提供了一个大型 3D 模型库,供我们的观众使用。
-
它有一个官方的 Blender 导入器和导出器,非常适合免费创建您自己的资产。
先决条件
本教程假定您已具备以下知识:
-
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 的编译器)。