OpenGL + glfw + glad 环境配置

OpenGL + glfw + glad 环境配置

1、工具下载

(1)glfw

GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入,
从网址 下载页 下载源代码(虽然提供了编译完成的二进制文件,但仍建议手工下载源代码通过CMake编译)
OpenGL + glfw + glad 环境配置_第1张图片

(2)CMake

需要通过CMake来将下载得到的源代码建立工程文件再得到与机器使用的二进制文件
Cmake下载
选择自己需要的版本即可。
OpenGL + glfw + glad 环境配置_第2张图片
之后更具提示进行安装即可。

(3)GLAD

GLAD可以简化使用调用OpenGL函数的操作
GLAD在线服务
OpenGL + glfw + glad 环境配置_第3张图片
选择完成相关信息后点击右下角的GENERATE即可。

2、内容检查

在相关下载、安装完成后,将得到如下内容
(1)glfw压缩包,内有一个文件夹。
(2)CMake工具
(3)glad压缩包,内含两个文件夹 include, src两个文件夹。
接下来需要将这些内容进行简单的组装

3、环境搭建

在进行以下步骤前,请建立一个你自己的文件夹(我这里是OpenGL),此文件夹中建立两个文件夹 includelib。还可在建立一个other文件夹用来存储其他的一些文件,便于以后建立工程。下文我就以OpenGL文件夹称呼。
OpenGL + glfw + glad 环境配置_第4张图片

(1)得到glfw工程文件。

建立一个空文件夹,将glfw.zip内的文件夹解压到这里。打开CMake工具(直接使用它的GUI来进行工程文件的创建)OpenGL + glfw + glad 环境配置_第5张图片
第一个选择你解压得到的文件夹
第二个选择拟创建工程的位置
点击左下角的Configure进行设置
OpenGL + glfw + glad 环境配置_第6张图片

第一项选择你拥有的IDE版本,如果选择的不存在可能导致报错。第二项与你本身机器的架构有关,我这里选择的是x64(比较疑惑的是没有x86版本)选择完成后点击Finish,再点击Configue,Generate即可(中间变为白色)。(如果出现报错请检查各项选择是否与你的机器匹配)OpenGL + glfw + glad 环境配置_第7张图片
这里就得到了相应的解决方案。
进入你的VS进行编译即可。建议把Debug和Release版本都编译出来。注意你的解决方案平台。
OpenGL + glfw + glad 环境配置_第8张图片
可在工程文件的src文件夹下找到编译的到的两个文件夹。在完成以上内容后我们需要将glfw需要的内容添加到本部分提到的OpenGL文件夹中。1、将初始解压得到的glfw文件夹内的include内的GLFW文件夹添加到OpenGL文件夹的include中。2、将提到的Debug文件夹和Release文件夹添加到lib文件夹中。(如果需要多个不同版本的可添加到other中)

(2)glad的相关内容

在完成上一步后,我们来解决glad的问题。在下载完成后,我们得到的是一个glad压缩包,将include文件夹中的内容解压到OpenGL的include文件夹中,将src文件夹下的glad.c文件添加到lib文件夹中。完成以上两步后,我们得到的OpenGL文件夹如下。

OpenGL下
OpenGL + glfw + glad 环境配置_第9张图片
include下
OpenGL + glfw + glad 环境配置_第10张图片
lib下
OpenGL + glfw + glad 环境配置_第11张图片

Release 和 Debug 文件夹
OpenGL + glfw + glad 环境配置_第12张图片
OpenGL + glfw + glad 环境配置_第13张图片
到此我们需要的依赖就全部得到了

4、工程创建

(1)使用VS创建一个C++空项目。注意调整你的解决方案平台,我这里使用的是Debug,X64

OpenGL + glfw + glad 环境配置_第14张图片

(2)接下来,我们需要将之前得到的库添加进来。

首先,进入测试 -> 调试属性 -> VC++目录

编辑包含目录库目录,选择路径就是上一步提到的OpenGL文件夹
OpenGL + glfw + glad 环境配置_第15张图片
lib内需要具体到Release还是Debug

(3)添加链接

打开 链接器->输入->附加依赖项输入 opengl32.lib; glfw3.lib;
OpenGL + glfw + glad 环境配置_第16张图片

(4)添加glad.c

OpenGL + glfw + glad 环境配置_第17张图片
在解决方案资源管理器内选择源文件,右击添加,现有项,选择之前存放在lib文件家中的glad.c文件
OpenGL + glfw + glad 环境配置_第18张图片
到此为止环境就搭建完成了,接下来我们测试一下

5、测试

//OpengGL's Hello World
#include 
#include 
#include 
using namespace std;

void processInput(GLFWwindow* window);
void framebuffer_size_callback(GLFWwindow* window, int width, int height);

const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 800;
//1、在VC++目录添加 Opengl的 include 和 lib
//2、在连接器添加	glfw.lib
//(有可能是glfw3dll.lib, 则需要在工程中同样添加.dll文件,记得把解决方案平台和配置一致)
//3、在源代码中添加 glad.c文件


//GLFW专注用于创建窗口,封装的是创建窗口相关的部分,简化创建窗口的过程
//GLAD封装调用OpenGL库中函数,简化操作
int main()
{
	//窗口初始化部分
	glfwInit();	//初始化glfw窗口
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//OPENGL主版本号
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//OPENGL子版本号
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);	//使用OpenGL的核心模式 (可编程渲染管道)

	GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);//长,宽,名称 UnKnown, Unknown
	//异常处理
	if (window == NULL)
	{
		cout << "Failed to create GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}//处理完毕

	glfwMakeContextCurrent(window);	//将窗口的上下文设置为当前线程的上下文
	glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); //缓冲回调		
	//循环使程序关闭前能够持续渲染

	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
	{
		std::cout << "Failed to initialize GLAD" << std::endl;
		return -1;
	}
	while (!glfwWindowShouldClose(window))
	{
		processInput(window);
		//重新渲染
		//这里采用的是双渲染,在下一帧渲染完成前由前一个渲染驻扎在前台,后部完毕后直接替换,防止逐个渲染实时替换导致的画面频闪
		glClearColor(0.1f, 0.2f, 0.6f, 1.0f);
		glClear(GL_COLOR_BUFFER_BIT);
		glfwSwapBuffers(window);
		//检查是否有事件发生
		glfwPollEvents();
	}
	glfwTerminate();
	return 0;
}

//外界输入相应
void processInput(GLFWwindow* window)
{
	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
		glfwSetWindowShouldClose(window, true);
}
//窗口回调
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
	// make sure the viewport matches the new window dimensions; note that width and 
	// height will be significantly larger than specified on retina displays.
	glViewport(0, 0, width, height);
	//前两个参数为起点未知,后面为宽度高度
}

建立一个C++源文件,拷贝代码到其中。运行项目即可。
OpenGL + glfw + glad 环境配置_第19张图片
建立了如下所示的窗口说明环境搭建成功了。

6、常见问题

(1)CMake建立工程失败

检查创建解决方案的版本与机器上拥有的是否匹配,检查创建的平台是否匹配。

(2)无法运行

1:检查链接器的两个依赖是否添加。
2:检查平台是否匹配
3:检查glad.c是否添加

(3)下载缓慢、下载失效……

为大家提供百度网盘的版本。
网盘下载
提取码:glgl

你可能感兴趣的:(OpenGL)