OpenGL 环境搭建:CMake、GLFW、GLAD
OpenGL 环境搭建
概述
GLFW (Graphics Library Framework):配合OpenGL使用的轻量级工具程序库。
GLAD:加载OpenGL函数指针(解决不同显卡驱动兼容性问题)
CMake:一个跨平台的构建系统生成器(Meta-Build System),用于管理C/C++项目的编译过程。
软件环境
- Visual Studio 2022
- Windows 11
配置步骤
使用CMake构建GLFW
CMake可以自动处理GLFW的依赖关系和平台特定配置
下载GLFW源代码
- 从GLFW官网下载
Source package
https://www.glfw.org/download.html
- 解压缩glfw-3.4.zip文件(2025/06/12,最新版本号:3.4)
- 在解压缩后的目录下(glfw-3.4)新建build文件夹
下载CMake
- 从CMake官网下载
installer
https://cmake.org/
- 双击 cmake-4.0.2-windows-x86_64.msi 微软安装程序
- 安装
构建GLFW
- 打开 CMake 程序
Where is the source code(源代码目录):glfw-3.4.zip文件 解压的路径
Where to build the binaries(存放编译结果的目标文件目录):glfw-3.14/build
- 点击Configure按钮,选择工程的生成器的版本号 (Visual Studio 2022)
- Configuring done
- 点击Generate按钮
- Generate done
- 点击Open Project按钮
- 构建项目
- 打开项目所在目录
- 进入src目录
- 进入Debug目录
- 复制编译目标文件
- 粘贴到自定义的存放类库文件的目录
可以存放到任意目录,后续获取类库文件时,只要设置该目录即可。此处我存放到 C:\OpenGL\libs 目录下。
- 复制 glfw-3.4/include 目录下的 GLFW 目录
- 将 GLFW 目录拷贝到自定义的存放头文件的目录
可以存放到任意目录,后续获取头文件时,只要设置该目录即可。此处我存放到 C:\OpenGL\include 目录下。
配置 GLAD
- 打开GLAD在线服务
https://glad.dav1d.de/
- 生成GLAD文件
- 下载 glad.zip 文件
- 解压缩 glad.zip 文件,打开 glad/include 目录
- 将glad/include 目录下的所有文件拷贝到自定义的目录下
可以存放到任意目录,后续获取头文件时,只要设置该目录即可。此处我存放到 C:\OpenGL\include 目录下。
链接库、导入头文件
新建
- 打开 Visual Studio 2022,点击 Create New Project
- 创建 C++ Empty Project
- 打开工程属性
- 选择VC++ Directories选项卡
- 点击 Include Directories 右侧的目录选择框
- 在弹出框中,新建 New Line
- 输入 C:\OpenGL\include (配置 GLAD章节 第五步 的头文件目录),同样地在 Libray Directories 项目输入 C:\OpenGL\libs (构建GLFW 第十一步 的类库文件目录)
- 选择 Linker 选项卡,点击 Input 选项
- 点击 Additional Dependencies 右侧的下拉框
- 在弹出框中输入 glfw3.lib opengl32.lib
- 点击确定
你好,窗口
- 将 glad.zip 解压后的 glad (配置GLAD章节 第四步) 目录下的 /src/glad.c文件拷贝到 C++ 项目中
- 拷贝到 C++ 项目的 Source Files 目录下
- 新建 main.cpp 文件
- 在 main.cpp 文件中输入如下代码:
#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 processInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
}
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
while (!glfwWindowShouldClose(window))
{
processInput(window);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
- 运行
- 弹出 LearnOpenGL 黑色窗口,点击黑框,按 ESC 键,窗口关闭
总结
综上,将头文件和类库文件放在不同目录中,让C++项目可以访问这些文件路径即可。
文章声明
内容准确性: 我会尽力确保所分享信息的准确性和可靠性,但由于个人知识有限,难免会有疏漏或错误。如果您在阅读过程中发现任何问题,请不吝赐教,我将及时更正。
posted on 2025-06-12 20:37 wubing7755 阅读(700) 评论(0) 收藏 举报
浙公网安备 33010602011771号