二、Visual Studio2022配置OpenGL环境

文章目录

一、OpenGL库的下载

OpenGL配置的库是GLFW+GLAD ,GLFW 主要用于创建 OpenGL 窗口和管理输入;GLAD 主要用于加载 OpenGL 函数

GLFW下载地址
下载Windows的32bit版本即可。

下载完成解压如下所示:

GLAD下载地址

点击glad.zip下载即可。

解压后如下所示:

二、OpenGL环境配置

我们用的是VS2022,所以只需要include文件夹和lib-vc2022就足够了,然后使用VS2022创建一个空项目,将上述的文件拷贝到此项目中。同理将GLAD也拷贝到此项目中

我们先来配置头文件的路径:

右键项目->属性->C+±>常规->附加包含目录;然后添加需要的头文件

接下来就是如何配置lib文件的路径了,点击链接器->常规->附加库目录

之后就是考虑如何把lib文件加载进来了,这个简单,点击链接器->输入->附加依赖项之后,将库文件输入进去即可,如下图所示:

最后需要把dll文件拷贝到运行工作目录中,即exe运行文件所在目录,你可以手动拷贝,也可以在生成事件->后期生成事件中添加拷贝命令

三、测试代码演示

示例代码:

cpp 复制代码
#include <iostream>
#include "glad/glad.h"
#include "GLFW/glfw3.h"

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

void processInput(GLFWwindow* window) {
	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
		glfwSetWindowShouldClose(window, true);
	}
}

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, "OPenGL Core", NULL, NULL);
	if (window == NULL) {
		std::cout << "Failed to create GLFW window" << std::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)) {
		processInput(window);

		glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
		glClear(GL_COLOR_BUFFER_BIT);

		glfwSwapBuffers(window);
		glfwPollEvents();
	}
	glfwTerminate();
	
	return 0;
}

输出结果:

相关推荐
白色冰激凌1 分钟前
[SECS/GEM研究] (四)HSMS 用TCP取代串口
网络·c++·网络协议·secs/gem
ShineWinsu1 小时前
对于Linux:http的解析
linux·网络·c++·网络协议·http·请求·响应
choumin10 小时前
创建型模式——工厂方法模式
c++·设计模式·工厂方法模式·创建型模式
云小逸11 小时前
【SVN 详细使用指南:从入门到团队协作】
c++·svn
ziguo112216 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
白色冰激凌16 小时前
[SECS/GEM研究] (三)SECS-I 串口上消息怎么分块和重传
c++·secs/gem
光头闪亮亮16 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
光头闪亮亮16 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
_wyt00117 小时前
洛谷 P7912 [CSP-J 2021] 小熊的果篮 题解
c++·队列
choumin18 小时前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式