《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 的环境设置完成。