rust-gpu 发布 v0.2
目前可以编译并运行非常简单的着色器,而且核心库的很大一部分也可以编译。但是,很多功能还没有实现:例如,还不支持循环和开关!这意味着,尽管该项目在技术上可用,但远未达到可以投入生产使用。
代码语言:javascript复制#[spirv(entry = "fragment")]
pub fn main_fs(input: Input<Vec4>, mut output: Output<Vec4>) {
let dir: Vec3 = input.load().truncate();
let cs_pos = Vec4(dir.0, -dir.1, 1.0, 1.0);
let ws_pos = {
let p = clip_to_world.mul_vec4(cs_pos);
p.truncate() / p.3
};
let dir = (ws_pos - eye_pos).normalize();
// evaluate Preetham sky model
let color = sky(dir, sun_pos);
output.store(color.extend(0.0))
}
v0.2的 Github Release 链接:https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.2
rust-analyzer 测量 Rust 的内存使用情况
这篇文章记录了在 rust-analyzer 中用于测量内存消耗的一些有趣技巧。通常,有两种广泛的方法可以分析程序的内存使用情况。第一种方法是基于堆的解析(heap parsing),第二种方法是基于对分配和释放进程的调用检测。详细可以参见原文。
文章链接,https://rust-analyzer.github.io/blog/2020/12/04/measuring-memory-usage-in-rust.html
RAUI,将 UI 视为另一种数据
RAUI,受到 React 声明式 UI 组成和 UE4 Slate 小部件组件系统的极大启发。RAUI 体系结构的主要思想是将 UI 视为另一种数据,你可以将其转换为目标呈现引擎选择的目标可呈现数据格式。
Application 的示例:
代码语言:javascript复制let mut application = Application::new();
let tree = widget! {
(app {
title = (title_bar: {"Hello".to_owned()})
content = (vertical_box [
(#{"hi"} button: {"Say hi!".to_owned()})
(#{"exit"} button: {"Close".to_owned()})
])
})
};
let mut renderer = HtmlRenderer::default();
application.apply(tree);
if let Ok(output) = application.render(&mut renderer) {
println!("{}", output);
}
Github 链接,https://github.com/PsichiX/raui
200 行 Rust 代码解释 Futures
本书旨在通过示例驱动的方法来解释 Rust 中的 Futures,探索为什么它们被设计成这样,以及它们是如何工作的。还介绍了一些在编程中处理并发时的替代方案。
英文原版链接,https://cfsamson.github.io/books-futures-explained/introduction.html
中文版本链接,https://stevenbai.top/rust/futures_explained_in_200_lines_of_rust/
From 日报小组 洋芋
社区学习交流平台订阅:
- Rustcc论坛: 支持rss
- 微信公众号:Rust语言中文社区