配着玩意儿确实挺麻烦的。按着官方文档的步骤一步一步地踩了过去。当然,这里也借鉴了几位大佬的指点,终于把环境给配置好了。为了方便之后的同学,省的下载CMaKe等一堆恶心的东西,这里提供我配置好的下载包点击即可下载

点此下载我配置好的环境

对了,我使用的环境为如下所示:

这里提供一些编译所需要的下载链接:

如果你觉得还是要自己动手配置,请直接往下阅读即可,如果你想用我配置好的包,请先下载,然后点击此处进行跳转阅读。


环境介绍

下载并编译GlFW库

1.把CMakeGLFW 下载到本地,并且把CMake安装好。安装就平时安装OK。

2.解压GlFW

3.打开CMake,设置source codeGLFW解压目录,build目录为GLFW解压目录下新建的build文件夹。

4.Configure,后面的值默认即可。

5.然后再次点击Configure,并且Generate

6.完成后,在build目录下生成了Visual Studio的解决方案,打开即可。


7.这时在visual Studiobuild\src\Debug\目录下,得到了编译好的glfw3.lib库文件,我们把它放好,留在后面备用。

下载glad

在浏览器中打开Glad在线服务页面 ,修改语言为C/C++,选择OpenGL,API选择使用的对应OpenGL版本(官方推荐3.3以上的),Profile选择Core,勾上Generate a loader,点击GENERATE,在跳转后的界面里下载压缩好的glad即可。

配置包

  1. 到任意盘符建立一个新的目录openGL你要记得这个目录的位置,里面包含Libs和Include文件夹,将GLFW源码中的include\文件下的内容、GLFW编译后的库、下载的GLAD库,放入该新建好的目录内,配置成一个包,这样方便以后工程可以复用。如上文提到,(点此返回到上文下载),这里我已经自己做好了一个包openGL_bulid,下载下来解压即可。不过是否适配你的电脑就不好说了。包里的目录结构如下图所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
├─opengl32.dll  #这个要放到windows/system32文件夹里
├─src
| └glad.c #这个是编译的,需要引入到vs里
├─lib
| └glfw3.lib #需要添加到vs
├─include
| ├─KHR
| | └khrplatform.h
| ├─GLFW
| | ├─glfw3.h
| | └glfw3native.h
| ├─glad
| | └glad.h
  1. Visual Studio 新建一个工程,注意要选择控制台程序

  2. 配置Visual studio 新工程,注意文件路径以及文件名称

  • 调试 –>> 某某项目属性 –>> VC++目录 –>> 包含目录 –>> 点击会弹出一个对话框 –>> 然后添加刚刚配置好的包中include目录。

  • 同理,库目录是添加刚刚配置好的lib目录。

  • 这一步是添加openGL的库,注意,需要先把包里面的openGL32.dll放入到C:\Windows\System32文件夹中,在在VC 中的 连接器–>> 输入–>> 附加依赖项 –>> s手动输入 opengl32.libglfw3.lib这两个库。

  • 从项目管理器中添加opengl\src\glad.c源文件。如图所示。

4.编译代码并进行测试。
源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <glad/glad.h>
#include <GLFW/glfw3.h> /*这两个库的路径要填对,否则一些函数会报错*/
#include <iostream>
using namespace std;

void framebuffer_size_callback(GLFWwindow* window, int width, int height);

int main() {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL) {
cout << "Failed to create GLFW window" << endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}

glViewport(0, 0, 800, 600);

glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

while (!glfwWindowShouldClose(window)) {
glfwSwapBuffers(window);
glfwPollEvents();
}

glfwTerminate();
return 0;
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
}

运行结果如下所示。


好啦!大功告成,接下来就开始愉快的写作业吧!