OpenGL 开发环境搭建

OpenGL 环境搭建

概述

本文介绍在 Windows 11 + Visual Studio 2022 环境下搭建 OpenGL 开发环境的方法。

GLFW:配合OpenGL使用的轻量级工具程序库
GLAD:加载OpenGL函数指针(解决不同显卡驱动兼容性问题)

环境说明

  • 操作系统:Windows 11
  • 开发工具:Visual Studio 2022
  • GLFW版本:3.4
  • OpenGL版本:4.6

配置步骤

方式一:使用预编译版本

GLFW 官方提供预编译的二进制包,无需手动 CMake 编译。

下载 GLFW 预编译包

  1. 访问GLFW官网下载页

  2. 下载 Binary package

图片失效即显示

解压文件

解压后目录结构如下:

glfw-3.4.bin.WIN64/
├── include/
│   └── GLFW/
│       ├── glfw3.h
│       └── ...
├── lib-vc2022/
│   ├── glfw3.lib
│   └── glfw3.dll

方式二:使用 CMake 手动编译 GLFW

如果需要自定义编译选项(如静态链接),可以手动编译。

下载GLFW源代码

  1. GLFW官网下载 Source package
https://www.glfw.org/download.html
图片失效即显示
  1. 解压缩glfw-3.4.zip文件(2025/06/12,最新版本号:3.4)
图片失效即显示

下载CMake

  1. CMake官网下载 installer
https://cmake.org/
图片失效即显示
  1. 安装
图片失效即显示

使用 CMake 构建 GLFW

  1. 打开 CMake 程序
Where is the source code(源代码目录):glfw-3.4.zip文件 解压的路径
Where to build the binaries(存放编译结果的目标文件目录):glfw-3.14/build
图片失效即显示
  1. 点击Configure按钮,选择工程的生成器的版本号 (Visual Studio 2022)
图片失效即显示
  1. Configuring done
图片失效即显示
  1. 点击Generate按钮
图片失效即显示
  1. Generate done
图片失效即显示
  1. 点击Open Project按钮
图片失效即显示
  1. 构建项目
图片失效即显示
  1. 打开项目所在目录
图片失效即显示
  1. 进入src/Debug目录
图片失效即显示
  1. 复制编译目标文件
图片失效即显示
  1. 粘贴到自定义的存放类库文件的目录
可以存放到任意目录,后续获取类库文件时,只要设置该目录即可。此处我存放到 C:\OpenGL\libs 目录下。
图片失效即显示
  1. 复制 glfw-3.4/include 目录下的 GLFW 目录
图片失效即显示
  1. 将 GLFW 目录拷贝到自定义的存放头文件的目录
可以存放到任意目录,后续获取头文件时,只要设置该目录即可。此处我存放到 C:\OpenGL\include 目录下。
图片失效即显示

配置 GLAD

GLAD 是 OpenGL 函数加载器,需要根据使用的 OpenGL 版本在线生成。

  1. 打开GLAD在线服务
https://glad.dav1d.de/
  1. 生成GLAD文件
图片失效即显示
  1. 下载 glad.zip 文件
图片失效即显示
  1. 解压缩 glad.zip 文件,打开 glad/include 目录
图片失效即显示
  1. 将glad/include 目录下的所有文件拷贝到自定义的目录下
可以存放到任意目录,后续获取头文件时,只要设置该目录即可。此处我存放到 C:\OpenGL\include 目录下。
图片失效即显示

配置 Visual Studio 项目

创建 C++ 空项目

  1. 打开 Visual Studio 2022,点击 Create New Project
图片失效即显示
  1. 创建 C++ Empty Project
图片失效即显示
  1. 打开工程属性
图片失效即显示
  1. 选择VC++ Directories选项卡
图片失效即显示
  1. 点击 Include Directories 右侧的目录选择框
图片失效即显示
  1. 在弹出框中,新建 New Line
图片失效即显示
  1. 输入 C:\OpenGL\include (配置 GLAD章节 第五步 的头文件目录),同样地在 Libray Directories 项目输入 C:\OpenGL\libs (构建GLFW 第十步 的类库文件目录)
图片失效即显示
  1. 选择 Linker 选项卡,点击 Input 选项
图片失效即显示
  1. 点击 Additional Dependencies 右侧的下拉框
图片失效即显示
  1. 在弹出框中输入 glfw3.lib opengl32.lib
图片失效即显示
  1. 点击确定
图片失效即显示

编写第一个 OpenGL 程序

  1. 将 glad.zip 解压后的 glad (配置GLAD章节 第四步) 目录下的 /src/glad.c文件拷贝到 C++ 项目中
图片失效即显示
  1. 拷贝到 C++ 项目的 Source Files 目录下
图片失效即显示
  1. 新建 main.cpp 文件
图片失效即显示
  1. 在 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;
}
  1. 运行
图片失效即显示
  1. 弹出 LearnOpenGL 黑色窗口,点击黑框,按 ESC 键,窗口关闭
图片失效即显示

CMake 管理

额外说明:若希望项目更易于移植,推荐使用 CMake 来管理项目

项目目录结构

创建如下目录结构:

OpenGLProject/
├── CMakeLists.txt          # CMake 配置文件
├── src/
│   ├── main.cpp            # 主程序入口
│   └── glad.c              # GLAD 源文件
└── include/
    ├── GLFW/               # GLFW 头文件
    ├── glad/               # GLAD 头文件
    └── KHR/                # KHR 头文件

使用 FetchContent 自动下载 GLFW

cmake_minimum_required(VERSION 3.15)

project(GLDiagram
    VERSION 1.0.0
    DESCRIPTION "OpenGL Drawing Canvas"
    LANGUAGES C
)

# ---------- C 标准 ----------
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

# ---------- 输出目录 ----------
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

# ---------- FetchContent ----------
include(FetchContent)

# ---------- 下载 GLFW ----------
FetchContent_Declare(
    glfw
    GIT_REPOSITORY https://github.com/glfw/glfw.git
    GIT_TAG 3.3.9
)

FetchContent_MakeAvailable(glfw)

# ---------- 查找 OpenGL ----------
find_package(OpenGL REQUIRED)

# ---------- 源文件 ----------
set(SOURCES
    src/main.c
    src/glad.c
)

# ---------- 可执行文件 ----------
add_executable(${PROJECT_NAME} ${SOURCES})

# ---------- 头文件目录 ----------
target_include_directories(${PROJECT_NAME} PRIVATE
    include
)

# ---------- 链接库 ----------
target_link_libraries(${PROJECT_NAME} PRIVATE
    glfw
    OpenGL::GL
)

# ---------- Windows 额外库 ----------
if(WIN32)
    target_link_libraries(${PROJECT_NAME} PRIVATE
        gdi32
    )
endif()

# ---------- Linux ----------
if(UNIX AND NOT APPLE)
    target_link_libraries(${PROJECT_NAME} PRIVATE
        pthread
        dl
    )
endif()

# ---------- 构建信息 ----------
message(STATUS "----------------------------------")
message(STATUS "Project: ${PROJECT_NAME}")
message(STATUS "Version: ${PROJECT_VERSION}")
message(STATUS "System: ${CMAKE_SYSTEM_NAME}")
message(STATUS "Compiler: ${CMAKE_C_COMPILER}")
message(STATUS "----------------------------------")

构建步骤

# 1. 创建构建目录
mkdir build
cd build

# 2. 配置项目
cmake ..

# 3. 编译
cmake --build .

# 4. 运行
./bin/OpenGLProject

总结

综上,将头文件和类库文件放在不同目录中,让C++项目可以访问这些文件路径即可。

文章声明

内容准确性: 我会尽力确保所分享信息的准确性和可靠性,但由于个人知识有限,难免会有疏漏或错误。如果您在阅读过程中发现任何问题,请不吝赐教,我将及时更正。

posted on 2025-06-12 20:37  wubing7755  阅读(1507)  评论(0)    收藏  举报