OpenGL 环境配置

PS:

在LearnOpenGL中将采用GLFW+CMake+GLAD+VS2022来进行OpenGL的环境搭建。

本人觉得LearnOpenGL在某些步骤还是没有讲清楚,因此做此博客来给大家做个借鉴,避免一些误区。

目录

PS:

GLFW环境配置:

GLFW

步骤:

CMake安装

CMake

步骤

接下来我们就要开始创建工程了!

 GLAD

GLAD

步骤

运行一个窗口

总结


GLFW环境配置:

GLFW

GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入,对我们来说这就够了。(官方描述)。

步骤:

  1. Download | GLFW在官网上进行下载源码包(resource packge)这边建议在D盘新建一个(命名为:OpenGL)文件夹,将所需的资源全部解压到该文件中。

解压文件留做待用......

CMake安装

CMake

CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。(官方)

步骤

  1. Download | CMake在官网下载二进制文件(Binary distributions)。ps:这边简单提一嘴。二进制文件(Binary distributions)时编译后的可执行文件。源文件(Source distributions)
  2. 是源代码文件,需要自己配置环境编译。
  3. 这里我们选择。
  4. 这里根据自己需要进行配置(懒人一键next)。
  5. 打开CMake。
  6. 这里将用上上述的GLFW文件(不能有中文路径!!!!!)。build文件(自己在glfw中新建文件夹)
  7. 点击左下角Configure。
  8. 然后选择自己需要的编译器点击finish就可以了。
  9. 最后点击Generate,将在build文件夹里面(你自己在glfw中新建的build文件夹)生成文件。
  10.  在build文件夹里面找到GLFW.sln文件。用vs2022打开。然后生成解决方案(Build Solution)。

  11. 然后在build/src/Debug文件夹内就会出现我们编译出的库文件glfw3.lib。留着备用!

接下来我们就要开始创建工程了!

  1.  新建一个空项目,要选c++的。

  2.  选成x64的。ps:x64就是六十四位的,x86是三十二位的。

  3. 右击解决方案选择属性!

  4. 选择VC++目录,这里将配置两个目录包含目录(include directories)和库目录(liberary directories)。这里先解决包含目录(include directories),点击包含目录(include directories)。复制这个路径,打开文件夹,进入这个路径。
  5. 将glfw的include文件夹里面的文件放入上述的路径新行,将下面的路径输入。
  6. 然后点击确认。
  7. 复制该路径进入文件夹。进入
  8. 将glfw-build-src-debug中的lib文件复制到上面进入的文件夹中。并把新建行将下面复制的路径放入。
  9. 然后确定即可。
  10. 最后还需要添加依赖。点击链接器(Linker)和输入(Input)将glfw3.lib自己在依赖项后面添加。点击确定即可。

 GLAD

GLAD

GLAD是一个开源的库,它能解决我们上面提到的那个繁琐的问题。GLAD的配置与大多数的开源库有些许的不同,GLAD使用了一个在线服务。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。

步骤

  1. https://github.com/Dav1dde/glad进入GLAD的GitHub页面。
  2.  进入到一个在线服务的页面。

     Language选择C/C++,API gl选择3.3往上(你要是对你的GPU有自信,可以试着版本拉满)

  3.  进入到一个在线服务的页面。

     Language选择C/C++,API gl选择3.3往上(你要是对你的GPU有自信,可以试着版本拉满)

  4. 页面往下翻,如图勾选,以及Gnerate生成点击下载!!!!!!。
  5. 内部结构。
  6. GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(gladKHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。
  7. 到此就配置完成了,接下来要运行一个窗口测试一下!

运行一个窗口

新建一个test.cpp文件。Code Viewer. Source code: src/1.getting_started/1.2.hello_window_clear/hello_window_clear.cpp

把该网站的代码粘贴过来 

运行。 

 

 大功告成!

总结

本人也是初学,不过一切都是运行成功后才发出来的。不会乱教。其中对编译器的理解也不够深入,因此谢谢大家包含。

如果大家过程有问题,可以评论区留言。本文建议配合LearnOpenGL食用更佳。

大家多多点赞评论转发!谢谢观看!

测试代码以及解释。

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
void framebuffer_size_callback(GLFWwindow*, int, int);
void processInput(GLFWwindow* windows);
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
int main() {
	glfwInit();//初始化glfw
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//主版本号为3
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//次版本号为3
	glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//核心模式
#pragma region MacOS
	//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);//向前兼容
#pragma endregion

	//创建一个窗口对象
	GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "learnOpenGL", NULL, NULL);//创建一个窗口实例
	if (window == NULL) {
		std::cout << "Failed to create GLFW window"<<std::endl;
		glfwTerminate();//glfw终止
		return -1;
	}
	glfwMakeContextCurrent(window);//暂不知晓
	glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);//每次更改窗口大小,调用framebuffer_size_callback函数。
	//GLAD管理ogl函数指针
	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
		std::cout << "Failed to initailize GLAD" << std::endl;
		return -1;
	}
	//循环渲染
	while (!glfwWindowShouldClose(window)) { //glfwWindowShouldClose()检查glfw是否要求被退出
		processInput(window);//监听是否ESCAPE退出

		glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//颜色清空后 用这个颜色填充。
		glClear(GL_COLOR_BUFFER_BIT);//颜色缓冲
		//glClear(GL_DEPTH_BUFFER_BIT);//深度缓冲
		//glClear(GL_STENCIL_BUFFER_BIT);//模板缓存

		glfwSwapBuffers(window);//函数交换颜色缓冲(他是一个储存着GLFW窗口每一个像素颜色值的大缓冲),刷新显示。
		glfwPollEvents();//函数检查有没有触发什么事件,更新窗口状态,并调用对应的回调函数。
	}
	glfwTerminate();//终止GLFW
	return 0;
}
/// <summary>
/// 输入ESCAPE退出
/// </summary>
/// <param name="window"></param>
void processInput(GLFWwindow* window) {
	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
		glfwSetWindowShouldClose(window, true);
	}
}
/// <summary>
/// 回调函数,每次改变窗口时调用,修改viewport
/// </summary>
/// <param name="window"></param>
/// <param name="witdh"></param>
/// <param name="height"></param>
void framebuffer_size_callback(GLFWwindow* window, int witdh, int height) {
	glViewport(0, 0, witdh, height);
}

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值