Windows配置OpenGl环境

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` 。

  1. 回到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. 在代码中直接包含头文件并使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值