GLFW 新手指南:5分钟创建你的第一个 OpenGL 窗口 GLFW 新手指南5分钟创建你的第一个 OpenGL 窗口【免费下载链接】glfwA multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input项目地址: https://gitcode.com/GitHub_Trending/gl/glfw想做一个能渲染图形的小窗口却不想折腾 Win32、X11 这些平台 APIGLFW 是一个跨平台的窗口创建与输入处理库读完这篇你能在 Linux 上完成 GLFW 编译并跑起第一个 OpenGL 窗口程序。项目定位与适用场景GLFW 的思路很直接窗口、图形上下文、输入事件这三件事由它负责你只写渲染逻辑。平台差异被全部藏在库内部——Linux 上同时支持 X11 和 WaylandWindows 与 macOS 也各自有独立后端。主库用 C99 编写只需要操作系统头文件和 CMake 3.16没有任何第三方运行时依赖仓库里的deps/目录只是给示例和测试程序准备的小工具库。适合这些场景开发需要一次编写、多平台运行的 OpenGL / OpenGL ES / Vulkan 应用写图形 demo、学 OpenGL 渲染流程需要键盘、鼠标、游戏杆手柄输入的轻量游戏环境准备与安装Linuxgit clone https://gitcode.com/GitHub_Trending/gl/glfw cd glfw mkdir build cd build cmake .. make sudo make install常见坑Ubuntu 等发行版要先装 X11 开发头文件如libx11-dev否则窗口后端会编译失败。Windows / macOSWindows 用 Visual Studio 2013 或 MinGW-w64 均可macOS 直接用系统自带 Clanggit clone https://gitcode.com/GitHub_Trending/gl/glfw cd glfw mkdir build cd build cmake -G Visual Studio 17 2022 .. # macOS 改为 cmake .. cmake --build . --config Release默认会连带编译示例与测试程序它们依赖的 getopt、TinyCThread 等小库已随仓库放在deps/里无需额外下载。最小可运行示例保存为first_window.c用gcc first_window.c -o first_window -lglfw编译运行会得到一个 640×480、可关闭的窗口#include GLFW/glfw3.h int main(void) { if (!glfwInit()) // 初始化库失败则退出 return -1; GLFWwindow* window glfwCreateWindow(640, 480, My First GLFW Window, NULL, NULL); // 一次调用同时创建窗口和 OpenGL 上下文 if (!window) { glfwTerminate(); return -1; } glfwMakeContextCurrent(window); // 把上下文绑定到当前线程 while (!glfwWindowShouldClose(window)) { glClear(GL_COLOR_BUFFER_BIT); // 清空颜色缓冲 glfwSwapBuffers(window); // 交换前后缓冲呈现画面 glfwPollEvents(); // 轮询键盘、鼠标与系统事件 } glfwDestroyWindow(window); glfwTerminate(); // 释放 GLFW 占用的资源 return 0; }各部分职责调用作用glfwInit/glfwTerminate初始化与释放必须成对出现在程序首尾glfwCreateWindow同时拿到窗口和 GL 上下文倒数第二个参数是显示器NULL表示窗口模式glfwMakeContextCurrentOpenGL 调用只在绑定了上下文的线程上有效多线程时每个渲染线程都要调一次主循环三件套清屏 → 交换缓冲 → 轮询事件这是 GLFW 应用的固定帧结构核心功能速览窗口与上下文管理src/window.c 负责窗口创建、调大小、全屏切换完整 API 声明在 include/GLFW/glfw3.h。输入处理src/input.c 提供键盘、鼠标、游戏杆的回调机制注册一个回调函数就能收到按键事件。图形上下文后端src/context.c 按平台分发到 WGL、GLX、EGL、NSGL你不需要了解各 API 的差异。显示器与事件循环src/monitor.c 枚举连接的显示器glfwPollEvents适合游戏帧循环glfwWaitEvents则阻塞到有新输入适合省 CPU 的 UI 程序。继续深入官方教程与编译指南docs/其中quick.md是逐步版第一个窗口compile.md讲各平台编译细节11 个可运行的示例程序旋转齿轮、粒子系统、高度图等examples/针对各项功能的边界情况测试程序tests/想改代码或提交补丁的话先看 docs/CONTRIBUTING.md 里的贡献规范项目长期接受 bug 报告和新平台移植贡献者名单见 CONTRIBUTORS.md。【免费下载链接】glfwA multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input项目地址: https://gitcode.com/GitHub_Trending/gl/glfw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考