Visual Studio的下载
Visual Studio 2022 C++ 编程环境
|---|----------------------------------------------------------------------------|
| |
| | |
GLFW库安装
GLFW官网地址
GLFW官网地址:https://www.glfw.org下载相应版本,如下图:
|---|----------------------------------------------------------------------------|
| |
| | |
CMake软件进行编译安装
下载CMake
下载的如果是源码包,需要下载CMake软件进行编译安装。
CMake官网地址:CMake - Upgrade Your Software Build System
进行安装,界面如下:

可以修改安装路径到D盘
编译glfw3.4
在下载的GLFW的文件夹glfw-3.4下面创建文件夹build,build文件夹下面创建install文件夹,用来存放编译后生成的文件。
运行CMake,点击Borwsse Source按钮,选择要编译的源代码文件夹,即glfw-3.4下面的build文件夹,点击Borwse Build按钮,选择编译文件存放的位置,如下图:

点击Configure按钮,选择编译器等相关信息,这个要选x64

点击Finish按钮进行配置,如下所示:
修改安装路径,把路径改成刚才创建的install文件夹里


用Visual Studio 2022 打开工程文件,GLFW.sln

点击ALL BUILD右键-->生成


编译成功

选择Install,鼠标右键生成,将在install文件夹下面生成GLFW的头文件和库文件,如下:


GLAD库安装
打开glad官网地址:https://glad.dav1d.de
选择,C/C++语言,OpenGL库,版本选择最新版本4.6(这个一定要记住,后面编程会用到),

选择核心模式。选择后,点击GENERATE按钮。会在线生成GLAD的相关文件,如下所示:

选择.ZIP压缩包下载
解压缩后如下:

整理文件(选作)
创建dependence文件
最后整理完是这样的

在Visual Studio配置
创建一个c++的空项目
右键-->属性


把包含目录和库目录配置了
包含目录配置include
库目录配置lib
配置的文件都是CMake编译出来的,在install里面



配置链接器里的输入


测试代码
一:
cs
#include<glad/glad.h>
#include<GLFW/glfw3.h>
#include<iostream>
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
const unsigned int VIEW_WIDTH = 800;
const unsigned int VIEW_HEIGHT = 600;
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
int main()
{
int glfwSate = glfwInit();
if (glfwSate == GLFW_FALSE)
{
std::cout << "GLFW initialize failed!" << std::endl;
exit(EXIT_FAILURE);
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "Hello OpenGL", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
// glad: load all OpenGL function pointers
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
//glfwSetKeyCallback
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
std::cout << "Call frame buffer callback function!" << std::endl;
glViewport(0, 0, width, height);
}
二:
cs
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
// 视口调整回调函数
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
}
// 键盘输入回调函数
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {
glfwSetWindowShouldClose(window, true);
}
}
int main() {
// 初始化GLFW
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// 创建窗口
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Window", NULL, NULL);
if (window == NULL) {
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
// 初始化GLAD
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
// 设置视口和回调
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
glfwSetKeyCallback(window, key_callback);
// 渲染循环
while (!glfwWindowShouldClose(window)) {
// 清屏
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 交换缓冲并处理事件
glfwSwapBuffers(window);
glfwPollEvents();
}
// 清理资源
glfwTerminate();
return 0;
}