#glfw #opengl #opengl-context #input-event #events #applications #platform-independent

sys glfw-sys

一个开源、多平台的库,用于创建具有 OpenGL 上下文的窗口以及接收输入和事件

18 个稳定版本

使用旧的 Rust 2015

5.0.0+3.3.9 2024 年 1 月 19 日
4.0.0+3.3.5 2022 年 5 月 30 日
3.3.5 2021 年 11 月 28 日
3.3.4 2021 年 4 月 21 日
3.1.2 2015 年 3 月 29 日

761图形 API

Download history 1683/week @ 2024-04-23 1705/week @ 2024-04-30 1388/week @ 2024-05-07 1422/week @ 2024-05-14 1577/week @ 2024-05-21 1672/week @ 2024-05-28 1568/week @ 2024-06-04 1617/week @ 2024-06-11 1713/week @ 2024-06-18 1411/week @ 2024-06-25 580/week @ 2024-07-02 1096/week @ 2024-07-09 1445/week @ 2024-07-16 1369/week @ 2024-07-23 1891/week @ 2024-07-30 1640/week @ 2024-08-06

每月 6,578 次下载
92 仓库中使用(直接使用 4 个)

Zlib 许可证

1.5MB
32K SLoC

C 29K SLoC // 0.1% comments Objective-C 3K SLoC // 0.1% comments Rust 19 SLoC

GLFW

Build status Build status Coverity Scan

简介

GLFW 是一个开源、多平台的库,用于 OpenGL、OpenGL ES 和 Vulkan 应用程序开发。它提供了一个简单、平台无关的 API 来创建窗口、上下文和表面,读取输入,处理事件等。

GLFW 本地支持 Windows、macOS、Linux 和其他类 Unix 系统。在 Linux 上,X11 和 Wayland 都得到支持。

GLFW 基于 zlib/libpng 许可证

您可以 下载 最新稳定版本的源代码或 Windows 可执行文件,或从 GitHub 获取 最新 分支。从 3.0 版本开始,每个版本都有一个相应的 标注标签,其中包含源代码和二进制存档。

在线提供了 文档,并包含在所有源代码和二进制存档中。查看 发行说明 了解最新版本中的新功能、注意事项和弃用功能。更多详细信息请参阅 版本历史

master 分支是稳定的集成分支,应该始终可以在所有支持的平台上进行编译和运行,尽管新增功能的详细信息可能在新功能被包含到版本中之前会发生变化。新功能和许多错误修复存在于 其他分支 中,直到它们稳定到足以合并。

如果您是GLFW的新用户,您可能会发现GLFW 3的教程很有用。如果您以前使用过GLFW 2,可以参考过渡指南来迁移到GLFW 3 API。

GLFW的存在得益于世界各地许多人的贡献,无论是通过报告错误、提供社区支持、添加功能、审查或测试代码、调试、校对文档、建议功能或修复错误。

编译GLFW

GLFW本身只需要您的操作系统和窗口系统的头文件和库。它不需要任何上下文创建API(WGL、GLX、EGL、NSGL、OSMesa)或渲染API(OpenGL、OpenGL ES、Vulkan)的头文件即可启用对这些API的支持。

GLFW支持使用Visual C++ 2010及以后版本、MinGW和MinGW-w64在Windows上编译,在macOS上使用Clang,在Linux和其他类Unix系统上使用GCC和Clang编译。它可能在其他环境中也能编译,但这不是常规测试的内容。

所有支持的编译器都可以使用预编译的Windows二进制文件

有关如何自行编译GLFW的更多信息,请参阅编译指南

使用GLFW

有关教程、指南和API参考,请参阅文档

为GLFW做出贡献

有关更多信息,请参阅贡献指南

系统需求

GLFW支持Windows XP及以后版本和macOS 10.8及以后版本。Linux和其他运行X Window系统的类Unix系统即使没有桌面环境或现代扩展也得到支持,尽管某些功能需要运行中的窗口或剪贴板管理器。OSMesa后端需要Mesa 6.3。

有关更多信息,请参阅文档中的兼容性指南

依赖关系

GLFW本身仅依赖于您的窗口系统的头文件和库。

(实验性的)Wayland后端还依赖于用于生成Wayland协议头文件的extra-cmake-modules包。

示例和测试程序依赖于一些小型库。这些库位于deps/目录中。

如果CMake可以找到该工具,则使用Doxygen生成文档。

报告错误

错误报告给我们的问题跟踪器。有关报告错误时需要包含的信息,请参阅贡献指南

变更日志

  • 更新了上游的游戏手柄映射
  • 错误修复:在单缓冲窗口创建时交换了缓冲区(#1873)
  • 错误修复:由于不兼容的控制器共享硬件ID,游戏手柄映射更新可能会产生过多的GLFW_INVALID_VALUE(#1763)
  • 错误修复:用于上下文句柄的原生访问函数没有检查API是否匹配
  • [Win32] 错误修复:USE_MSVC_RUNTIME_LIBRARY_DLL在CMake 3.15或更高版本上没有效果(#1783,#1796)
  • [Win32] 错误修复:在Windows上使用LLVM编译失败 (#1807,#1824,#1874)
  • [Cocoa] 错误修复:只有当相关事件发出后,MoltenVK层的缩放内容才会更新
  • [Cocoa] 错误修复:通过程序移动光标会导致光标短暂冻结 (#1962)
  • [Cocoa] 错误修复:在macOS 12.0中已弃用 kIOMasterPortDefault
  • [X11] 错误修复:更改 GLFW_FLOATING 可能会导致内存泄漏
  • [Wayland] 错误修复:一些按键在Wayland中不重复 (#1908)
  • [Wayland] 错误修复:非箭头光标与热点偏移 (#1706,#1899)
  • [Wayland] 错误修复:在FreeBSD上未定义 O_CLOEXEC 标志
  • [NSGL] 错误修复:在外部定义 GL_SILENCE_DEPRECATION 会导致重复定义警告 (#1840)
  • [EGL] 错误修复:忽略 GLFW_DOUBLEBUFFER 上下文属性 (#1843)

联系方式

您可以在glfw.org找到GLFW的最新版本,以及有关项目的新闻、文档和其他信息。

如果您有关GLFW使用的问题,我们有一个论坛,以及Libera.Chat上的 #glfw IRC频道。

如果您要报告错误、提交补丁或请求功能,请在GitHub上的问题跟踪器中提交。

最后,如果您有兴趣帮助GLFW的开发或将其移植到您喜欢的平台,请加入我们的论坛、GitHub或IRC。

依赖关系