0.手动配置所需文件下载地址:
glm:http:// GLM download | SourceForge.net
glfws:An OpenGL library | GLFW
glad:glad.dav1d.de
cmake:Download CMake
1. 认识OpenGL
1.1 介绍OpenGL:
OpenGL (Open Graphics Library) 是一种跨平台、开放标准的图形编程接口,用于渲染2D和3D矢量图形。它的核心目标是抽象底层硬件和操作系统,为开发者提供统一的接口来操作GPU (图形处理器),从而实现高效的图形渲染。
1.2 如何理解配置OpenGL环境:
OpenGL 的核心是一个标准的 API 规范,就如同 C 语言中的头文件,只提供函数的声明,并未具体实现,因为具体的实现与对应的操作系统和硬件有关。而配置 OpenGL 的环境就是下载一些实现 OpenGL 的 API 的包 (SDK),这一过程常常与 IDE 相联系,比如 Visual Studio。
1.3 需要哪些包:
Windows SDK 自带了基础的 OpenGL 1.1 头文件 (`gl.h`) 和静态库 (`opengl32.lib`),但现代 OpenGL (3.0+) 需要额外扩展。
- 一般安装 GLFW、GLAD、GLM 这三个 SDK 就能搭建基本的 OpenGL 环境,也就是说实现基础的功能,这三个 SDK 的作用是:
- GLFW: 创建窗口和 OpenGL 渲染上下文,提供输入事件通道。
- GLAD: 动态加载 OpenGL 函数指针,使开发者可直接调用如 `glDrawArrays` 等核心渲染指令。
- GLM: 生成模型、视图、投影矩阵。
2. 配置:
2.1 手动配置:
2.1.1 按使用的 IDE 是 Visual Studio 2022
以下步骤基于 Visual Studio 2022 进行配置。
2.1.2 打开 Visual Studio,建立一个控制台项目
1. 启动 Visual Studio 2022。
2. 选择“创建新项目” > “控制台应用 (C++)” > 配置项目名称和路径 > 点击“创建”,最好记住项目存放路径。
2.1.3 下载 GLFW、GLM、GLAD 三个包,下载地址如下:
- **GLFW**: An OpenGL library | GLFW
- **GLAD**:glad.dav1d.de
- **GLM**: GLM download | SourceForge.net
**CMake**: Download CMake
可以将glfw,glad,glm下载的文件放到统一的文件夹下方便后面处理,可以放到对应项目的文件夹下创建一个新的文件夹,具体步骤如下
2.1.4 下载配置和下载目标:
- 下载上述包的最新版本。
- 对于 GLFW,由于没有预编译的 DLL 和 LIB 文件,需要使用 CMake 生成 Visual Studio 解决方案并编译,步骤在后面。
- GLAD 需要通过在线服务生成源文件,
配置如下:
- Language: C/C++
- Specification: OpenGL
- API:
- gl Version: 选最新即可(与项目中GLFW设置的版本一致)
- Profile: Core(必须选择Core Profile,否则无法使用现代OpenGL功能)
- Extensions: 留空(除非明确需要特定扩展)
- 点击 Generate 下载 `glad.zip`。
。
-GLM 是头文件库,可直接使用。
2.1.5 解压 GLFW 并使用 CMake 生成解决方案,具体步骤:
由于 GLFW 没有预编译的 DLL 和 LIB 文件,需要手动编译:
1. 安装 CMake:从 [CMake 下载页面](https://cmake.org/download/) 下载并安装。
2. 解压 GLFW:就解压到创建的文件夹下,并在解压的文件夹下创建文件夹命名为‘build'。
4. 打开 CMake:
- 设置源代码路径(就是解压的文件夹的路径)和构建路径(build文件夹的路径)”。
5. 配置和生成:
- 点击“Configure”,选择你的 Visual Studio 版本 (如 Visual Studio 17 2022)。
- 配置完成后点击“Generate”,生成解决方案。
6. **编译 GLFW**:
- 在 `glfw-build` 文件夹中打开生成的 `.sln` 文件。
选择release,运行,可能会报错但不要紧
- 编译后的文件位于 `glfw-build/src/Release` 文件夹中,包括 `glfw3.lib` 。
- 回到cmake界面勾选build_shared_libs,同样点击generate再次生成sln并运行此时 `glfw-build/src/Release` 文件夹有生成了dll文件
2.1.6 创建一个文件夹名为library放入项目的文件夹下:
建议的项目目录结构如下:
D:\Data\data_for_app_use\VS_projects\test_2\library\
├─ include\
│ ├─ glad\将glad里的glad里的include的文件放入
│ ├─ GLFW\将glfw里的include的文件放入
│ ├─ glm\将glm里的glm直接放入
│ └─ KHR\将glad里的KHR里的include里的文件放入
└─ lib\
├─ glfw3.dll
├─ glfw3.lib
├─ glfw3dll.exp
└─ glfw3dll.lib
此外右键单击源项目点击添加然后选择先有项,添加glad.c
2.1.7 在 VS 的项目属性中进行配置:
0.项目属性的核心作用
- 编译器配置:告诉编译器头文件(`.h`)的位置,避免 `include` 报错。
- 链接器配置:告诉链接器库文件(`.lib`)的位置和名称,确保函数符号能被正确解析。
1. 在 Visual Studio 中右键项目,选择“属性”。
2. 配置包含目录:
- 转到“C/C++” > “常规” > “附加包含目录”。
- 添加:library\include对应的文件地址
3. 配置库目录:
- 转到“链接器” > “常规” > “附加库目录”。
- 添加:library\lib对应文件地址
4. 配置链接库:
- 转到“链接器” > “输入” > “附加依赖项”。
- 添加:`glfw3.lib;opengl32.lib`。
2.1.8 试运行代码:
以下是一个简单的 OpenGL 程序,用于验证环境配置是否正确:
出现的报错调节#include 头文件的位置可能解决
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp> // GLM 测试
#include <iostream>
#include <glm/gtc/matrix_transform.hpp>
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
}
int main() {
// 初始化 GLFW
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW" << std::endl;
return -1;
}
// 配置 GLFW 窗口
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, "OpenGL Test", NULL, NULL);
if (!window) {
std::cerr << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
// 初始化 GLAD
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cerr << "Failed to initialize GLAD" << std::endl;
return -1;
}
// 测试 GLM
glm::vec3 position(1.0f, 2.0f, 3.0f);
glm::mat4 model = glm::translate(glm::mat4(1.0f), position);
std::cout << "GLM test matrix:\n";
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
std::cout << model[i][j] << " ";
}
std::cout << std::endl;
}
// 主循环
while (!glfwWindowShouldClose(window)) {
// 清屏
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 交换缓冲区和处理事件
glfwSwapBuffers(window);
glfwPollEvents();
}
// 清理资源
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
```
编译并运行。如果窗口显示并背景色为蓝绿色,说明配置成功。
2.2 用 VS 的 NuGet 进行配置:
- Visual Studio 内置包管理器 NuGet,可以简化库的安装和管理。
- 步骤:
1. 在解决方案资源管理器中右键项目,选择“管理 NuGet 程序包”。
2. 搜索“glfw”、“glad”和“glm”等包。
3. 安装所需的包到项目中。
4. NuGet 会自动配置包含目录和链接库。
5. 在代码中直接包含头文件并使用。