1、Windows下载安装Visual Studio2022
-
下载地址
首先登陆Visual Studio官网:Visual Studio官网https://visualstudio.microsoft.com/zh-hans/,界面如下所示。然后选择需要的版本:社区版(免费)、专业版、企业版。如果是个人使用,社区版就够用了,我这里下载社区版。
-
开始安装
下载下来后是一个VisualStudio的安装程序。
双击运行,弹出下面的界面,点击继续。
然后稍微等待即可。
安装完成后会自动弹出以下窗口,根据你要使用Visual Studio所做的事情选择不同的功能集和工作负载,同时选择安装路径(建议使用默认安装路径)。在窗口的上方还有单个组件、语言包、安装位置这些选项,可以不用管,均为默认值。最后点击安装。
接着慢慢等待即可。
安装完毕后,重启。Visual Studio就安装完成了
2、Visual Studio配置OpenGL环境
-
OpenGL库的下载
我们OpenGL配置的库是glfw+glad。glfw是OpenGL,OpenGLES和vutkan开发的开源,多平台库。它提供了一个简单的API,用于创建Windows,上下文和曲面,接收输入和事件。glad是继gl3w,glew之后,当前最新的用来访问OpenGL规范接口的第三方库。简单说glad是glew的升级版,就是说glew比较老,glad比较新。
-
glfw下载
glfw官网地址:An OpenGL library | GLFWGLFW project home page.https://www.glfw.org/
打开后点击DownLoad
然后下载windows的32bit版本,因为64bit的bug比较多,常用32bit
下载下来后解压。 解压后里面的文件如图所示:
-
glad下载
glad的官网地址:https://glad.dav1d.de/Web generator for the Glad toolhttps://glad.dav1d.de/
打开后进行如下操作
然后点击GENERATE,会下载下来一个glad.zip文件,解压该文件,里面有两个文件夹
-
OpenGL环境配置
在你的电脑合适的位置创建一个文件夹,我这里命名为OpenGL。在里面创建三个文件夹用来保存相应的文件
dll文件夹里放置下面文件,glfw3.dll在你下载的glfw-3.3.8.bin.WIN32\lib-vc2022里
include文件夹放置GlAD和GLFW文件,GLAD文件即为你下载的glad.zip解压后的 文件,我这里将文件夹改名成了大写。GLFW文件里面保存glfw-3.3.8.bin.WIN32里的include文件和lib-v2022
lib文件夹里放置如下文件,这两个文件在下载的glfw-3.3.8.bin.WIN32\lib-vc2022里
在Visual Studio里创建一个空的C++项目,然后右键项目名称——>属性
注意右上角的平台选择win32.然后VC++目录——>包含目录,点击编辑
点击1处新建一行,然后把OpenGL中include文件夹下的两个文件的include目录填进去,点击确定
同样的方式编辑库目录,把lib文件夹放进去。
然后指定连接器。连接器——>输入——>附加依赖项。将opengl32.lib和glfw3.lib填进去。
注:行与行之间请按回车,opengl32.lib是系统自带的
最后点击应用——>确定即可。
然后将glad/src文件夹里的glad.c文件复制到项目的源文件下面
代码测试
以上配置就完成了,我们可以跑一段代码测试一下
#include<iostream>
#include<glad/glad.h>
//#include<GL/glew.h>
#include<GLFW/glfw3.h>
using namespace std;
int main(int argc,char** argv[])
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
//glfwWindowHint(GLFW_RESIZABLE,GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800,600,"LearnOpenGL",nullptr,nullptr);
if (window == nullptr)
{
cout << "Failed to create GLFW window" << endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
cout << "Failed to create GLFW window" << endl;
return -1;
}
while (!glfwWindowShouldClose(window))
{
glClearColor(0.2f,0.3f,0.3f,1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwPollEvents();
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}
结果