73 个版本 (破坏性更新)

0.58.0 2024 年 7 月 25 日
0.56.0 2024 年 5 月 22 日
0.55.0 2024 年 2 月 15 日
0.54.0 2023 年 11 月 14 日
0.0.6 2015 年 3 月 7 日

22图形 API

Download history 1755/week @ 2024-05-04 1674/week @ 2024-05-11 2252/week @ 2024-05-18 1677/week @ 2024-05-25 2120/week @ 2024-06-01 1879/week @ 2024-06-08 2258/week @ 2024-06-15 1920/week @ 2024-06-22 923/week @ 2024-06-29 1027/week @ 2024-07-06 1577/week @ 2024-07-13 1726/week @ 2024-07-20 2701/week @ 2024-07-27 1833/week @ 2024-08-03 2517/week @ 2024-08-10 2961/week @ 2024-08-17

每月 10,243 次下载
97 个模块(79 个直接) 中使用

Apache-2.0

185KB
3.5K SLoC

glfw-rs

Crates.io Docs.rs Build Status

GLFW 钩子库和 Rust 编程语言的包装器。

示例

extern crate glfw;

use glfw::{Action, Context, Key};

fn main() {
    let mut glfw = glfw::init(glfw::fail_on_errors).unwrap();

    let (mut window, events) = glfw.create_window(300, 300, "Hello this is window", glfw::WindowMode::Windowed)
        .expect("Failed to create GLFW window.");

    window.set_key_polling(true);
    window.make_current();

    while !window.should_close() {
        glfw.poll_events();
        for (_, event) in glfw::flush_messages(&events) {
            handle_window_event(&mut window, event);
        }
    }
}

fn handle_window_event(window: &mut glfw::Window, event: glfw::WindowEvent) {
    match event {
        glfw::WindowEvent::Key(Key::Escape, _, Action::Press, _) => {
            window.set_should_close(true)
        }
        _ => {}
    }
}

使用 glfw-rs

先决条件

确保您已编译和安装了 GLFW 3.x。您可能可以在您的包管理器中找到它,例如在 OS X 上:brew install glfw3(您可能需要运行 brew tap homebrew/versions)。如果没有,您可以从中提供的源代码 构建库。请注意,如果您在 Linux 上使用 CMake 编译 GLFW,您将必须提供 -DCMAKE_C_FLAGS=-fPIC 参数。您可以将 GLFW 安装到您的 PATH,否则您必须在调用 makemake lib 时指定包含库二进制的目录。

GLFW_LIB_DIR=path/to/glfw/lib/directory make

将 glfw-rs 包含到您的项目中

将以下内容添加到您的 Cargo.toml

[dependencies.glfw]
version = "*"

在 Windows 上

默认情况下,glfw-rs 将尝试编译 glfw 库。如果您想链接到您自己的构建的 glfw 或构建失败(在 Windows 上可能是这种情况),您可以禁用此功能

[dependencies.glfw]
version = "*"
default-features = false

原始窗口句柄 0.5.0 兼容性

默认情况下,glfw-rs 使用 raw-window-handle v0.6.0。如果您的项目依赖于使用 raw-window-handle v0.5.0 的 glfw-rs,则请在您的 Cargo.toml 中使用此行

glfw = { version = 0.56.0 , default-features = false, features = ["with-window-handle-v0-5"] }

支持

在 irc.mozilla.org 上联系 bjz,频道 #rust#rust-gamedev,或 在 GitHub 上提交问题

正在使用 glfw-rs

使用其他图形API的glfw-rs

在某些情况下,GLFW使用的OpenGL可能与图形API尝试使用的新的句柄冲突,导致崩溃,要解决这个问题,请在创建窗口之前添加

glfw.window_hint(WindowHint::ClientApi(ClientApiHint::NoApi));

。但是,如果您使用此方法,则无法使用某些内置函数,例如 window.swap_buffers()window.make_current()glfw.set_swap_interval(),但这些应该由图形API提供等效功能。

依赖项

~1.5-4MB
~84K SLoC