Third-party open-source software glfw| 三方开源软件glfw
GLFW
简介
GLFW 是一个开源的跨平台库,用于 OpenGL、OpenGL ES 和 Vulkan 应用程序开发。它提供了一个简单、平台无关的 API,用于创建窗口、上下文和表面,读取输入,处理事件等。
GLFW 原生支持 Windows、macOS 和 Linux 以及其他类 Unix 系统。在 Linux 上,同时支持 Wayland 和 X11。
GLFW 采用 zlib/libpng 许可证。
您可以下载最新的稳定版本,包括源代码或 Windows 二进制文件。从 3.0 版本开始,每个发行版都有一个相应的带注释的标签,其中包含源代码和二进制归档文件。
文档可在线获取,并包含在所有源代码和二进制归档文件中。有关最新版本中的新功能、注意事项和弃用信息,请参阅发行说明。更多详细信息,请参见版本历史。
master 分支是稳定的集成分支,应该始终能够在所有支持的平台上编译和运行,不过新添加功能的细节在包含到发行版之前可能会有所更改。新功能和许多错误修复会先存在于其他分支中,直到它们足够稳定后才会合并。
如果您是 GLFW 的新手,您可能会发现 GLFW 3 的教程很有用。如果您过去使用过 GLFW 2,有一份迁移指南可帮助您过渡到 GLFW 3 API。
GLFW 的存在离不开全球许多人的贡献,无论是报告错误、提供社区支持、添加功能、审查或测试代码、调试、校对文档、提出功能建议还是修复错误。
编译 GLFW
GLFW 主要采用 C99 编写,部分 macOS 支持功能使用 Objective-C 编写。GLFW 本身仅需要操作系统和窗口系统的头文件及库文件。要启用对上下文创建 API(WGL、GLX、EGL、NSGL、OSMesa)或渲染 API(OpenGL、OpenGL ES、Vulkan)的支持,无需额外的头文件。
GLFW 支持在 Windows 上使用 Visual C++ 2013 及更高版本、MinGW 和 MinGW-w64 进行编译;在 macOS 上使用 Clang 编译;在 Linux 和其他类 Unix 系统上使用 GCC 和 Clang 编译。它也可能在其他环境中编译通过,但未经过常规测试。
针对 Windows 和 macOS 上的所有受支持编译器,有预编译二进制文件可供使用。
有关如何自行编译 GLFW 的更多信息,请参阅编译指南。
使用 GLFW
有关教程、指南和 API 参考,请参见文档。
为 GLFW 做贡献
有关更多信息,请参见贡献指南。
系统要求
GLFW 支持 Windows XP 及更高版本,以及 macOS 10.11 及更高版本。运行 X Window System 的 Linux 和其他类 Unix 系统,即使没有桌面环境或现代扩展也能得到支持,不过部分功能需要运行窗口管理器或剪贴板管理器。OSMesa 后端需要 Mesa 6.3。
有关更多信息,请参见文档中的兼容性指南。
依赖项
GLFW 本身仅需要 CMake 3.4 或更高版本,以及操作系统和窗口系统的头文件及库文件。
示例程序和测试程序依赖于多个小型库。这些库位于 deps/ 目录中。
- getopt_port 用于带命令行选项的示例
- TinyCThread 用于多线程示例
- glad2 用于加载 OpenGL 和 Vulkan 函数
- linmath.h 用于示例中的线性代数运算
- Nuklear 用于测试和示例的用户界面
- stb_image_write 用于将图像写入磁盘
如果 CMake 能找到 Doxygen 工具,则会使用该工具生成文档。
报告缺陷
缺陷请提交至我们的问题跟踪器。 报告缺陷时,请查阅贡献指南以了解需包含的信息。
自 3.4 版本以来的更新日志
- 新增
GLFW_UNLIMITED_MOUSE_BUTTONS输入模式,允许报告超出鼠标按钮令牌限制的鼠标按钮 (#2423) - [Cocoa] 新增
QuartzCore框架作为链接时依赖项 - [Cocoa] 移除对 OS X 10.10 Yosemite 及更早版本的支持 (#2506)
- [Wayland] 缺陷修复:未销毁与分数缩放相关的对象
- [Wayland] 缺陷修复:在没有 seat 的合成器上,
glfwInit会导致段错误 (#2517) - [Wayland] 缺陷修复:拖放操作进入非 GLFW 表面时可能导致段错误
- [Wayland] 缺陷修复:中途读取数据提供失败时会发生内存泄漏
- [Null] 通过
VK_EXT_headless_surface新增 Vulkan “窗口” 表面创建功能 - [Null] 通过
EGL_MESA_platform_surfaceless在 Mesa 上新增 EGL 上下文创建功能 - [EGL] 当
GLFW_CONTEXT_CREATION_API设置为GLFW_NATIVE_CONTEXT_API时,允许在 Wayland 上进行原生访问 (#2518)
联系方式
在 glfw.org 上,您可以找到 GLFW 的最新版本,以及该项目的新闻、文档和其他信息。
如果您有与 GLFW 使用相关的问题,我们设有论坛。
如果您要报告缺陷、提交补丁或请求功能,请在 GitHub 的问题跟踪器中提交。
最后,如果您有兴趣参与 GLFW 的开发或将其移植到您喜爱的平台,请加入我们的论坛或 GitHub。