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 中
每月 10,243 次下载
在 97 个模块(79 个直接) 中使用
185KB
3.5K SLoC
glfw-rs
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
,否则您必须在调用 make
或 make 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