一、下载编译glfw
1、下载GLFW源码
解压下载的压缩包,并在里面创建“build”文件夹
2、使用CMake生成工程文件
打开CMake,选择源码目录和要生成的工程存放目录,点击“Configure”
选择“Visual Studio 16 2019”,其他默认,点击“Finish”
等待
编译完成,点击“Generate”
Generate 完成
在“build”文件夹里生成如下东西
3、使用VS2019生成glfw3.lib
双击“GLFW.sln”,用VS2019打开,右击“glfw”,选择“设为启动项目”
右击“GLFW3”,选择“重新生成”
在“build\src\Debug”文件夹中生成“glfw3.lib”
4、文件拷贝
把“Debug”文件夹和“glfw-3.3.8\include”文件夹,复制到一个新建文件夹“OpenGL”文件夹中
拷贝结果:新建的OpenGL文件夹中有“Debug”和“include”
Debug文件夹中有如下两个文件
include文件夹中有“GLFW”文件夹
“GLFW”文件夹中有如下两个文件
5、测试见三(与glad一起测试)
二、下载glad
1、下载Glad
访问上面的网址,填写如下信息,点击“GENRATE”
点击“glad.zip”,下载压缩包
2、文件拷贝
解压,把“glad\include”文件夹中的“glad”和“KHR”文件夹拷贝到“OpenGL\include”文件夹中
把glad\src文件夹中的glad.c拷贝到OpenGL文件夹中
三、测试
1、打开VS2019,创建C++空项目
更改名称和存储位置
更改为x64
2、 配置GLFW和glad
右击项目名称,选择“属性”
选择“所有配置”,添加“包含目录”和“库目录”:OpenGL\include和OpenGL\Debug
添加“附加依赖项”:opengl32.lib和glfw3.lib
添加“现有项”:glad.c文件
3、测试
添加“新建项”:main.cpp文件
把下面的代码拷贝到“main.cpp”文件中
#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);
}
点击“本地Windows调试器”,进行运行测试
运行结果
四、参考