《Learn OpenGL》 Ch 00 创建 Window
本部分的实现代码,见 00_CreateWindow
在使用 OpenGL 前,首先需要创建 OpenGL 的上下文和用于绘制的窗口等,这些内容是与操作系统相关的。OpenGL 希望成为一个跨平台的工具,因此 OpenGL 本身并不复杂这些内容的处理,需要用户自己来进行相关的环境配置。
好在一些现有的库已经帮助完成了工作,在学习 OpenGL 前首先需要进行的就是相关库的配置。
- 在 创建工程 中,创建后续所有的 OpenGL 教材存储的解决方案文件夹,每一个 OpenGL 教材都会是其中的一个项目。
- 在 配置 includes 和 libs 文件夹 中,配置后续所有的项目需要用到的 GLFW 和 GLAD,他们会存储在
includes和libs文件夹内。 - 在 配置项目 中将
includes和libs引用给项目。
#创建工程
首先在 Visual Studio 或 Rider 中创建 C++ 空白解决方案,并创建 00_HelloWindow 项目。另外创建空白的 includes 和 libs 文件夹。
此时的工程结构为:
1 | . |
后续说明以 Rider 作为 IDE 为例。
#配置 includes 和 libs 文件夹
我们将项目所依赖的头文件放置在 includes 文件夹内,将依赖的静态库放置在 libs 文件夹内,目前主要需要包含 GLFW 和 GLAD 两个库。
#GLFW
GLFW 用来进行创建系统窗口 / 渲染上下文,处理用户输入等操作。
对于 Windows 平台,可以直接从 GLFW 官网 上下载 Windows pre-compiled binaries 版本的文件,解压后的内容应当如下所示:
1 | . |
我们只关心其中的 lib-vc2022 和 GLFW 文件夹,将 GLFW 拷贝至 includes 目录下,将 lib-vs2022 中的内容拷贝至 libs 目录中。
#GLAD
GLAD 库用来简化找寻 OpenGL 实现地址的过程。
因为 OpenGL 实质上是一个标准,并不包含各函数接口的实现。所以不同的显卡厂商而言,会有不同的 OpenGL 函数的实现,这些实现都定义在显卡的驱动中。因此 OpenGL 函数的地址并不能在编译时刻确定,只能在 Runtime 时找到相关的函数指针地址再使用该指针进行操作,这无疑这是一个很繁琐的功能。因此我们需要 GLAD 库来简化操作。
GLAD库使用了网络服务来简化了编译过程,只要在其网站上选择目标语言和相关 OpenGL 类型之后,就可以直接生成出想要的内容并直接下载,网站上的相关设置如下:

当进行完配置后,下载 glad.zip 压缩包:
解压缩下载到的 glad.zip 文件夹,应该得到如下的内容:
1 | . |
在进入文件夹,运行如下两个命令来生成需要的静态链接文件。
1 | gcc ./src/glad.c -c -I ./include/ |
gcc 可以通过 Chocolatey 安装:
1 | choco install mingw |
然后将 include 目录下的内容拷贝至项目的 includes 目录下,将 glab.lib 拷贝至 libs 目录下。
#配置项目
当完成了 配置 includes 和 libs 文件夹 后,整个项目的目录结构为:
1 |
|
此时需要配置项目,以保证项目正确的使用配置的 includes 和 libs,首先进入 Solution Configuration 选择目标的平台:

这里选择为 Debug|x64:

在 Project Properties 的 Debug|x64 中的 VC++ Directories 中添加 includes 和 libs 文件夹:

在 Linker -> Input 中添加 glfw3dll.lib 和 glad.lib 和 opengl32.lib 的链接:
至此,includes 和 libs 都已经配置完成了,将 main.cpp 改为以下内容:
1 |
|
此时运行程序,结果应当为一个绿色的窗口,如下所示:

至此整个学习 OpenGL 的环境设置完成。

