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一起测试)
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调试器”,进行运行测试
运行结果
四、参考