问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OpenGL入门配置指南:GLFW和GLAD的详细配置步骤

创作时间:
作者:
@小白创作中心

OpenGL入门配置指南:GLFW和GLAD的详细配置步骤

引用
CSDN
1.
https://m.blog.csdn.net/qq_46081848/article/details/145356631

OpenGL是一个强大的跨平台图形渲染API,广泛应用于游戏开发、科学可视化、虚拟现实等领域。在实际开发中,GLFW和GLAD是两个非常重要的工具。本文将详细介绍如何配置GLFW和GLAD,帮助新手快速搭建OpenGL开发环境。

前言

OpenGL(Open Graphics Library)是一个强大的跨平台图形渲染 API,广泛应用于游戏开发、科学可视化、虚拟现实等领域。它提供了一系列函数,允许开发者直接与显卡硬件交互,从而实现高效的 2D 和 3D 图形渲染。然而,OpenGL 本身并不直接提供窗口管理、输入处理等功能,因此在实际开发中,我们通常需要借助一些第三方库来简化这些任务。
在 OpenGL 开发中,GLFW 和 GLAD 是两个非常重要的工具。
本文将详细介绍如何配置 GLFW 和 GLAD,帮助新手快速搭建 OpenGL 开发环境。

一、GLFW配置

1. GLFW 的作用

GLFW 是一个轻量级的库,专门用于创建和管理窗口,并处理输入事件。它的主要功能包括:

窗口管理:创建 OpenGL 窗口,支持全屏模式和窗口模式。

输入处理:处理键盘、鼠标和游戏手柄的输入事件。

上下文管理:创建和管理 OpenGL 上下文,支持指定 OpenGL 版本和模式(核心模式或兼容模式)。

跨平台支持:支持 Windows、macOS、Linux 等主流操作系统。

2.为什么需要 GLFW?

OpenGL 本身并不提供窗口管理或输入处理功能。如果没有 GLFW,开发者需要手动编写平台相关的代码来创建窗口和处理输入,这既繁琐又容易出错。GLFW 提供了一个统一的 API,隐藏了不同平台的底层细节,极大地简化了开发流程。

3.构建GLFW

3.1下载源代码包

GLFW的源代码包可以从它的官网上进行下载(GLFW官网:https://www.glfw.org/download.html)
其实GLFW官网上针对不同的操作系统分别提供了两种版本,分别是源代码版本和二进制版本。
这两者各有优缺点:
1.二进制版本
二进制版本是 GLFW 官方预先编译好的库文件,可以直接下载并集成到你的项目中。
优点:简单方便、开箱即用
缺点:二进制版本通常是针对特定平台和编译器编译的。例如,Windows 上的二进制版本可能是用 Visual Studio 编译的,如果你使用的是 MinGW 或其他编译器,可能会出现兼容性问题。并且,二进制版本是预先编译好的,无法根据需求自定义编译选项(如启用特定功能或优化)
2.源代码版本
源代码版本是GLFW的完整源代码,开发者需要自己编译生成库文件。
优点:源代码版本可以在任何支持的平台和编译器上编译,适合使用非主流编译器或自定义编译选项的开发者。可以根据需要自定义编译选项,例如启用或禁用特定功能、优化级别等。如果遇到问题,可以直接调试 GLFW 的源代码,或者根据需求修改源代码。
缺点:编译源代码需要配置编译环境(如 CMake、编译器工具链等),对初学者来说可能有一定门槛。
本章选择使用源代码版本进行配置
进入网站后,点击Source Package进行下载

3.2 编译GLFW源代码包

下载完成之后,使用CMake进行编译,这里不过多赘述CMake的安装,想要安装CMake的可以点击这里。
可以根据自身系统版本选择对应版本,为了方便我选择有GUI的版本,我这里选择的是windows x64版本的安装包(GUI版本)。
CMake安装完成之后,使用CMake来编译之前下载好的GLFW安装包。
之前下载好的压缩包压缩完成后放在自定义位置,我这里放在了F盘。
上图是GLFW源代码包中的内容。
CMake需要一个源代码目录和一个存放编译结果的目标文件目录。源代码目录我们选择GLFW的源代码的根目录,然后我们新建一个 build 文件夹,选中作为目标目录。
选择完之后点击Configure按钮会弹出下面的提示框。
在这里主要选择你对应的IDE环境,我这里使用的是vs2022。
然后点击Finish,会出现下图的界面。
这里点击Generate进行生成。
生成完成之后的build文件夹内应该有上述文件,我们用IDE打开GLFW.sln进入项目。
因为CMake已经配置好了项目,并按照默认配置将其编译为64位的库,所以我们直接点击Build Solution(生成解决方案)按钮,然后在build/src/Debug文件夹内就会出现我们编译出的库文件glfw3dll.lib。

3.3 项目链接GLFW

在链接之前,首先在自定义位置创建一个OpenGL文件夹(我这里放在了F盘),在里面创建lib和include两个文件夹。
将之前编译的库文件glfw3dll.lib放在lib文件夹内,将glfw-3.4\include中的内容放在include文件夹内。
然后首先进入Project Properties(工程属性,在解决方案窗口里右键项目),然后选择VC++ Directories(VC++ 目录)选项卡(如下图)。在下面的两栏添加目录:
现在VS可以找到所需的所有文件了。最后需要在Linker(链接器)选项卡里的Input(输入)选项卡里添加glfw3dll.lib这个文件:
要链接一个库我们必须告诉链接器它的文件名。库名字是glfw3dll.lib,我们把它加到Additional Dependencies(附加依赖项)字段中(手动或者使用选项都可以)。这样GLFW在编译的时候就会被链接进来了。

二、GLAD配置

1.GLAD的作用

GLAD 是一个用于加载 OpenGL 函数指针的库。它的主要功能包括:

加载 OpenGL 函数:在运行时动态加载 OpenGL 核心函数和扩展函数。

生成加载代码:通过 GLAD 的在线服务或命令行工具,生成针对特定 OpenGL 版本的加载代码。

跨平台支持:支持 Windows、macOS、Linux 等主流操作系统。

2.为什么需要 GLAD?

OpenGL 的函数指针在运行时由显卡驱动程序提供,不同平台和显卡的 OpenGL 实现可能不同。如果没有 GLAD,开发者需要手动加载这些函数指针,这既繁琐又容易出错。GLAD 自动生成加载代码,简化了这一过程。

3.配置glad

GLAD是一个开源的库,并且GLAD的配置与大多数的开源库有些许的不同,它使用了一个在线服务。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。
打开GLAD的在线服务,将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(如果配置足够,更新的版本也能用)。之后将模式(Profile)设置为Core,并且保证选中了生成加载器(Generate a loader)选项,都选择完之后,点击生成(Generate)按钮来生成库文件。
点击生成(Generate)按钮之后应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到之前创建的OpenGL\Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。

测试验证

为了验证是否成功安装了上述版本,我写了一段代码来验证。

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
int main() {
    // 初始化 GLFW
    if (!glfwInit()) {
        cout << "Failed to initialize GLFW" << 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, "LearnOpenGL", NULL, NULL);
    if (window == NULL) {
        cout << "Failed to create GLFW window" << endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    // 初始化 GLAD
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        cout << "Failed to initialize GLAD" << endl;
        return -1;
    }
    // 设置视口大小
    glViewport(0, 0, 800, 600);
    // 主循环
    while (!glfwWindowShouldClose(window)) {
        // 处理输入事件
        glfwPollEvents();
        // 渲染代码
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);  // 设置清屏颜色
        glClear(GL_COLOR_BUFFER_BIT);          // 清除颜色缓冲区
        // 交换缓冲区
        glfwSwapBuffers(window);
    }
    // 清理资源
    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

如果成功安装并运行上述代码会出现一个OpenGL的界面框。如下图所示。

总结

通过配置 GLFW 和 GLAD,可以快速搭建一个 OpenGL 开发环境。GLFW 提供了窗口管理和输入处理功能,而 GLAD 则简化了 OpenGL 函数的加载过程。这两个库的结合使得 OpenGL 开发更加高效和便捷。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号