
GLFW 快速入门指南3 步跑通第一个 OpenGL 窗口【免费下载链接】glfwA multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input项目地址: https://gitcode.com/GitHub_Trending/gl/glfw写图形程序时你总得先解决一件麻烦事怎么在 Windows、macOS、Linux 上都建一个窗口、拿一个 OpenGL 上下文、还能读到键盘鼠标事件。GLFW 就是干这个的开源库它负责窗口创建、OpenGL / OpenGL ES / Vulkan 上下文管理和输入处理API 很小C99 就能调。跑通后你看到什么本文的终点是 3 步装依赖、两条命令编译 GLFW 库、跑一个 640×480 的窗口程序。跑通后屏幕上会出现一个标题为 My GLFW Window 的空白窗口按 Esc 或点关闭按钮退出。仓库自带的 examples/triangle-opengl.c 更进一步会画一个旋转的彩色三角形编译时打开示例选项就能直接跑。从源码构建 GLFW 最快方法GLFW 用 CMake 构建源码在 Linux 上默认同时启用 X11 和 Wayland 后端所以先装开发包# Debian/Ubuntu 系安装窗口系统开发依赖 sudo apt install libwayland-dev libxkbcommon-dev xorg-dev拿到源码其他平台流程相同只是依赖不同见 docs/compile.md# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/gl/glfw cd glfw生成构建文件并编译顺手打开示例程序# 配置构建-D 参数让 examples 目录一起编译 cmake -S . -B build -DGLFW_BUILD_EXAMPLESON # 编译 GLFW 库和全部示例 cmake --build build装到系统路径是可选的装完链接-lglfw即可用sudo cmake --install build最小可运行案例一个 GLFW 窗口库编译好后写个最小窗口程序。GLFW 的核心就 4 个动作初始化、建窗口、泵事件、退出清理。#include GLFW/glfw3.h #include stdio.h // GLFW 的报错走回调而不是抛异常先挂一个排错全靠它 static void error_callback(int error, const char* description) { fprintf(stderr, GLFW Error: %s\n, description); } int main(void) { glfwSetErrorCallback(error_callback); // 少数可在 glfwInit 前调用的函数 if (!glfwInit()) // 初始化时确定窗口后端X11/Wayland 等 return -1; // 想要特定 OpenGL 版本必须在建窗口之前用 hint 声明 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 一次调用同时创建窗口和 OpenGL 上下文 // 返回 NULL 说明创建失败原因已打到上面的回调里 GLFWwindow* window glfwCreateWindow(640, 480, My GLFW Window, NULL, NULL); if (!window) { glfwTerminate(); return -1; } glfwMakeContextCurrent(window); // 上下文设为当前后才能调 OpenGL 函数 // 点关闭按钮只是置一个标记窗口不会真的消失要自己轮询这个标记 while (!glfwWindowShouldClose(window)) { glClear(GL_COLOR_BUFFER_BIT); // 渲染代码写这里 glfwSwapBuffers(window); // 交换前后缓冲 glfwPollEvents(); // 键盘/鼠标回调只在泵事件时触发 } glfwDestroyWindow(window); glfwTerminate(); return 0; }编译时加上 GLFW 头文件路径和库路径即可比如gcc test.c -I/path/to/glfw/include -L/build/src -lglfw -lm。值得先看的 3 个模块窗口与事件循环src/window.c 实现了glfwWindowShouldClose、窗口标题、大小等每个窗口可以单独挂一套回调关闭只是标记的行为也在这里。上下文创建src/context.c 是通用逻辑真正建上下文按平台分流到wgl_context.cWindows、glx_context.cX11、egl_context.cLinux/Wayland等文件排查建窗失败时按平台查对应文件。输入处理src/input.c 处理键盘、鼠标和游戏杆事件所有回调函数都从这里分发到各窗口。GLFW 常见报错排查 ⚠️glfwCreateWindow返回 NULL多半是版本 hint 太苛刻或显卡驱动没装好。先看回调里打出的具体错误把GLFW_CONTEXT_VERSION_*降到 3.0 试试能建窗就是版本问题。按了 Esc 没反应回调不是按了就立刻调用而是等你glfwPollEvents()或阻塞式glfwWaitEvents泵事件时才触发主循环里漏掉它就等于没接键盘。Windows 上glClear等函数编译报错默认 GL 头文件在 Windows 上通常只到 OpenGL 1.2现代 OpenGL 需要扩展加载器仓库 deps/glad/gl.h 就有现成的 glad 头配合glfwGetProcAddress加载即可。下一步想看完整的窗口 旋转三角形流程直接读 docs/quick.md它是官方的分步教程examples/ 里还有 gears、particles、sharing多窗口共享上下文等 11 个示例照着改就能上手自己的项目。【免费下载链接】glfwA multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input项目地址: https://gitcode.com/GitHub_Trending/gl/glfw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考