关于OpenGL在Visual Studio里的配置方法

2024.12.27补充:[创建窗口 - LearnOpenGL CN](https://learnopengl-cn.github.io/01 Getting started/02 Creating a window/),官方教程中有几点我还是比较认可的,最重要的就是将lib和include放置一个文件夹内,这样所有第三方库都在同一个位置(并且可以共享至多台电脑)。然而这要求你每次新建一个工程时都需要告诉IDE/编译器在哪能找到这些目录。

保证你有装有MinGW,若需要下载或测试是否安装,参考:https://blog.csdn.net/didi_ya/article/details/111240502

首先是Visual Studio 的安装步骤,官网下载VS2022下载器,选择如下进行下载即可,路径要自己设置一下,问题不大。

image.png

1.分别搜索glfw和glew(建议使用bing来搜索),分别下载Source package和Binaries Windows 64bit(32bit)

2.下载Cmake,详情见:Windows下CMake的下载与安装详解_cmake下载_wendy_ya的博客-CSDN博客

3.压缩glfw的压缩包,并进入如图所示的文件夹,这里可以看到如下图的文件

4.打开命令行窗口,使用cd命令进入包含CMakeLists文件的文件夹,并输入cmake . 然后回车。这里要注意不要少了空格和”.”

1
cmake . 

等运行结束,可以看到包含CMakeLists文件的文件夹里多了很多文件

5.找到其中glfw的sln文件并打开,进入visual studio,这时候可以看到所有的项目和解决方案。这里我们只需要在Debug设置下的生成解决方案即可。需要注意的是默认的项目是x64的,也就是64位的,这里统一生成64位的库。如果需要Release版本的库也可以设置并生成

(在运行之后会见到一个红色的叉叉,什么什么拒绝访问也算成功如下图)

32d285ed3c9065503ad18dce74c80658.jpg


生成解决方案后,我们可以在src文件夹中看到生成的Debug和Release文件夹,里面包含了生产的静态库文件,

glew如果下载的是binaries的解压以后就可以使用,如果是从git上下载的新的版本可以根据页面的说明重新编译生成或者直接使用2.2.0版本的binaries。

6.最后我们说一下在Visual Studio里的配置。我们首先新建一个c++的空项目,并在生成的项 目中添加新项main.cpp文件。然后我们在项目所在的文件夹中,找到项目名加.sln结尾的文件所在的位置,在这个位置新建三个文件夹分别名为DLL,Include,Lib,如下图:

7将glfw和glew文件夹里对应的include文件夹里的GL文件夹及GLFW文件夹复制粘贴到Include文件夹里。glfw里src\Debug文件夹里的glfw3.lib和glew里lib文件夹里的两个lib文件复制粘贴到Lib文件夹里。glew里bin文件夹里的dll文件复制粘贴到DLL文件夹里。我们这里都是用64位平台版本的文件。

最后,我们在项目属性里进行设置。这里采用相对路径的方式,需要修改的参数如图6-8中蓝色选项后面。这里需要注意的是我们这里所有的配置都是对应的Debug版本,如果想对Release版本也进行设置需要做出相应选择,同时lib文件也需要复制相应的版本。平台这里采用的是64位平台,所以对应的平台也是x64而不是32。这里容易产生歧义的是glew的lib文件虽然是64位的版本,但是文件名仍然是glew32,同时,Input中一定要输入opengl32.lib(下面第三个图中未添加)才能保证程序运行。

最后,我们对动态链接库dll文件进行设置,将路径加入系统路径。如图所示,在Debugging下的Environment(环境)里输入命令

img

这样,我们就完成了关于OpenGL窗口配置的全部设置。只需要输入以下代码,能正常编译运行看到白色窗口,则表示一切设置正常。项目可以在这里下载。https://github.com/paulwong80/OpenGLTutorial.git 该项目编译环境为windows11 + visual studio 2022

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>

#include <GL/glew.h>

#include <GLFW/glfw3.h>



int main()

{

glfwInit();

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);

glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);

glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // for mac



GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGLTutorial1", NULL, NULL);

if (window == NULL)

{

std::cout << "Failed to create GLFW window" << std::endl;

glfwTerminate();

return -1;

}

glfwMakeContextCurrent(window);



if (GLEW_OK != glewInit())

{

std::cout << "Failed to init glew" << std::endl;

glfwTerminate();

return -1;

}

std::cout << "Hello World" << std::endl;

std::cin.get();

return 1;

}

c7e32f98308b1af831635772dec2374c.png

得到一个白色窗口,黑色命令窗口里面打印Hello World就大功告成了。