OpenGL学习_一周目开荒
入门篇 第二节 创建窗口
GLFW
GLFW(下载链接)是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL渲染状态,定义窗口参数以及处理用户输入。
构建GLFW
在下载连接中会发现有多种版本,但是为了完整性和不出兼容性差错,最好选择下载Source Package版本(如下图所示)

但是下载源代码会因为用户所使用不同IDE而造成提供的工程文件不兼容的问题,如果从头开始构造工程可就太麻烦了,因此使用CMAKE工具来快速生成所想要的工程文件
CMAKE
CMAKE是一个工程文件生成工具,可以生成你自己所设置的目标IDE的工程文件(下载链接)大大节省了用户的时间
开始构建我们的工程吧
- 打开安装好的CMAKE,在第一栏填入你的GLFW目录,第三栏填入生成的工程的存放路径,如下图所示

- 设置好之后点击左下处的Configure按钮,会让我们选择IDE,选择你所应用的版本,一定要对应不要选错,其他选项默认即可,点击finish,之后再点击Configure,保存设置之后点击Generate开始生成
- 在生成的时候会有一些常见问题,有可能会报CMakeLists、cmake_uninstall.cmake缺失什么的,这时候建议重新下载一次GLFW源文件;同时如果报cmake could not find any instance of Visual Studio.这个错,请检查你的VS有没有下载C++开发等插件,具体操作及C++环境配置见(找不到VS的解决办法)
- 生成完毕会看见CMAKE控制台显示Configure done提示,这就代表工程成功构建在了你设置的存放路径。
编译
工程构建好了之后,我们就要编译出我们以后需要用到的库了,使用VS打开新构建工程里面的GLFW.sln文件,然后生成-->生成解决方案,如此一来,你就可以在“你构建的工程目录/src/Debug”里面找到新编译出的库glfw3.lib啦。
这里建议读者自己创建一个文件夹(第三方库文件夹),专门用来存放第三方的库(library)文件和包含(include)文件,如此搭配Git即在任何计算机上都可以操作同一个目录下的文件了,方便管理。如下图所示

如此一来,我们将glfw3.lib放入第三方库文件夹的Library文件夹中,将我们下载好的GLFW的include文件中的两个文件glfw3.h和glfw3native.h放入我们第三方库文件夹的Include文件夹中。
创建第一个OpenGL工程
- 首先创建一个新的VS项目,选择Visual C++,搞个酷炫的名字
- 链接 现在我们的VS还不知道我们的第三方库和头文件在哪,需要连接上。在解决方案资源管理器中右键点击我们的工程名,点击属性,点击VC++目录,然后将我们刚刚创建好的第三方库文件夹填入对应栏中,如下图所示

- 接下来需要在"链接器-输入-附加依赖项"中设置我们刚刚编译好的库,并且同时引入opengl32.lib即可;如果你是window系统的话,在microsoft SDK里就已经有这个库了,所以直接写就行,如果是在linux系统,请参照原文进行opengl32.lib的引入操作(linux下的opengl32.lib引入
- 如果上述操作一切顺利的话,可以在工程中键入以下代码并且无报错
#include <GLFW\glfw3.h>
GLAD
正式开始前还有一件事需要做,由于OpenGL不同驱动版本下函数的位置都是不同的,需要在运行时查询。因此就需要开发者在运行时获取函数地址并存在一个指针中以供后续使用。但是如果每一个函数都要进行这样的操作,那不麻烦的一B?因此我们引入GLAD来大大简化这个过程,只需告诉GLAD你的 OpenGL版本,就可以加载所有相关的OpenGL函数。
打开GLAD的在线服务,将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能正常工作)。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。
GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。
如果上述操作一切顺利的话,可以在工程中键入以下代码并且无报错
#include <glad\glad.h>