4个版本 (2个重大更新)
使用旧的Rust 2015
0.3.2 | 2019年3月31日 |
---|---|
0.3.1 | 2019年3月29日 |
0.2.0 | 2017年11月7日 |
0.1.0 | 2017年10月11日 |
#367 in 图形API
245KB
6K SLoC
processing-rs
Processing编程语言的实现,灵感来源于openFrameworks和libCinder。它是由Giessen Justus-Liebig大学心理学系Katja Doerschner实验室的Robert Ennis开发的。
预计未来几天将会有更好的错误测试。
请参阅基本示例以了解典型用法,以及文档以了解命令的某些解释。由于这是基于Processing构建的,因此您也可以使用他们的文档进行额外说明,以及命令的示例。
lib.rs
:
processing-rs
processing-rs
是一个crate,旨在使图形编程在Rust中像在流行的Processing环境中一样简单,同时不牺牲性能或轻松访问系统的其他部分。它通过在glium和glutin/glfw(根据您的喜好选择)之上构建一个便利层来实现这一点。它主要模仿Processing,但在几个方面有所不同,以适应Rust和glium的安全性功能,或吸收libCinder和openFrameworks的一些想法。例如,现在在processing-rs
中有setup
和draw
循环。这旨在为图形提供一个更灵活和模块化的工作流程。此外,由于processing-rs
基本上是一个薄包装器,因此您可以根据需要使用glium、glutin和原始OpenGL调用。它们通常与processing-rs
调用很好地结合,并允许您有更多机会创建有趣和有趣的显示。
典型用法遵循常见模式
1. Open a screen with processing::Screen::new(). This will return a
Screen struct, which is the central struct for coordinating draw calls,
managing shaders, and maintaining render state.
2. Pre-define a few shapes. This allows caching shape data on the CPU and GPU,
giving some marginal speed boosts and allowing the possibility to store
shapes in collections, such as Vectors. All shapes (Rect, Ellipse, etc.) in
this crate implement the Shape trait, which defines a common interface for
entities that can be drawn to a screen in a meaningful way.
3. Draw the shapes to the screen with screen.draw(). This is also where you will
want to use commands like screen.fill() and screen.stroke() to change the
colors of objects.
4. For any pattern drawn, you will also need to flip the framebuffers, so that
the pattern is synchronized with your monitor. This is achieved by
screen.reveal().
5. Use commands like screen.key_press() to get input from users, if needed.
6. Have fun! :-)
基本上,所有命令都遵循与Processing相同的调用约定,因此您也可以将Processing参考作为附加文档使用,并为一些基本示例使用您能做什么。
此外,processing-rs
还包含一些旨在使其适用于心理学研究的功能,包括色觉、材料感知、运动等。例如,它尝试在可能的情况下启用10位帧缓冲区,以增加颜色保真度,这在大多数色觉研究中非常重要。除此之外,它还旨在确保帧绘制尽可能精确地与监视器刷新同步。这与 glutin 相比,与 glfw 的效果更好,并且在 Mac 上,调用了一些 Objective-C 函数,以使程序获得更高的资源权限,并在程序运行时禁用 AppNap 等功能(代码取自有用的 PsychToolbox)。此外,当在 Mac 上构建 crate 时,它还会编译一个 C 库(称为 libpri
,简称“优先级库”),该库要求操作系统提供一些额外的优先级。在屏幕初始化时,crate 会自动通过 C FFI 调用该库。它不应干扰操作系统的正常操作,因此您可能只需接受默认行为。通过所有这些,再加上在 Mac 上更改设置以允许退出 Finder,可以实现比 PsychToolbox 在 Mac 上略好的同步,满足 Psychtoolbox 对良好帧同步的要求。然而,这仅在 Mac 笔记本电脑上进行了测试,操作系统为 10.13.3,显卡为英特尔显卡。
依赖关系
~19-31MB
~341K SLoC