VS配置GLFW和GLAD

269 阅读2分钟

2023/5/22

下载GLFW

1、在官网中下载GLFW的源码版本

image.png 2、将下载的压缩包解压

3、在官网中下载安装对应系统二进制版本CMake的安装包,可以直接安装

4、将源路径设置为解压后GLFW的路径,导出路径为新生成的build文件夹

image.png

5、点击Configer

image.png

6、等待Configer完成后,点击Generate

7、在导出的build文件夹中找到并打开GLFW.sln文件,右键点击glfw,然后将其设置为启动项目后进行Debug

image.png

image.png

8、在build/src/Debug目录下找到glfw3.lib和glfw3.pdb文件

image.png

9、自己新建一个存储第三方库的文件夹如OpenGL_VS,在文件夹中新建一个文件夹libs,将上一步中的glfw3.lib和glfw3.pdb装入libs文件夹中

10、在之前第四步解压后的glfw文件夹中找到include文件夹,将其移动到OpenGL_VS目录下

image.png

image.png

下载GLAD

1、在GLAD的在线服务中下载,注意Language、Profile和Options的选择,然后点击GENERATE

image.png

2、将下载的文件解压出来将include文件夹中的glad文件夹和KHR文件夹移动到下载GLFW时建立的OpenGL_VS/include文件夹中,将src文件夹中的glad.c文件移动到OpenGL_VS文件中

image.png

image.png

在VS中配置GLFW和GLAD

1、右击项目,打开属性,注意左上角的配置是选择Debug

image.png

2、将包含目录设置为include的路径,将库目录设置为libs的路径(include和libs都是之前在OpenGL_VS中建立的文件夹)

image.png

3、在链接器输入中,给附加依赖项中添加上opengl32.lib和glfw3.lib,然后点击应用

image.png

测试库是否添加上

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>

void processInput(GLFWwindow* window);

int main()
{
	glfwInit();
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__ 
	glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif

	GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
	if (window == NULL)
	{
		std::cout << "Failed to create GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}
	//GLFW将窗口的上下文设置为当前线程的上下文
	glfwMakeContextCurrent(window);

	//GLAD
	// glad: 加载所有OpenGL函数指针
	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
	{
		std::cout << "Failed to initialize GLAD" << std::endl;
		return -1;
	}

	// 渲染循环
	while (!glfwWindowShouldClose(window))
	{
		glClearColor(0.2f, 0.3f, 0.3f, 1.0f); //状态设置
		glClear(GL_COLOR_BUFFER_BIT); //状态使用

		processInput(window);
		// glfw: 交换缓冲区和轮询IO事件(按键按下/释放、鼠标移动等)
		glfwSwapBuffers(window);
		glfwPollEvents();
	}

	// glfw: 回收前面分配的GLFW先关资源. 
	glfwTerminate();
	return 0;
}

void processInput(GLFWwindow* window)
{
	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)	//摁Esc键退出
		glfwSetWindowShouldClose(window, true);
}

在刚才的项目中新建一个main.cpp文件,添加以上代码,看是否能够运行,运行结果如下:

image.png