Learn Wgpu 系列简化了之前Instancing的教程
作者表示之前的Instancing部分写的太过繁杂,作者喜欢展示各种不同的技术导致之前该章节与之前的章节相比显得脱节,这次更新简化了该教程。教程地址:https://sotrh.github.io/learn-wgpu/beginner/tutorial7-instancing/#instancing关于群集(Bevy)引擎ECS框架中system的语法糖是怎么实现的
群集(Bevy)引擎中的system就是普通的Rust函数,这样的设计及其符合人体工程学,就像作者本人在群集(Bevy)引擎的介绍中说的那样,目前找不到比群集引擎更符合人体工程学的ECS框架设计了。推特上有人简单分析了一下群集引擎中这部分代码的语法糖是怎么实现的,考虑到不少小伙伴并不能够随时访问推特,在这里我把大概意思搬运过来。system作为普通的Rust函数,它的参数也就代表了需要访问的那些组件的查询。群集提供的主要示例非常引人注目,系统就是函数,组件就是结构体,你不需要实现额外的trait,就能够让ECS框架正常运作。use bevy::prelude::*;
struct Velocity(f32);struct Position(f32);fn setup(mut commands:Commands) { commands .spawn((Position(0.0),Velocity(1.0),)) .spawn((Position(1.0),Velocity(2.0),));}fn movement(position:Mut<Position>,velocity:&Velocity) { position.0 += velocity.0;}fn main() { App::build() .add_startup_system(setup.system()) .add_system(movement.system()) .run();}
就像上面的示例一样,只要按照一定的规则写出函数,在App的构建模式中调用.system()方法就可以把函数变成系统。一个普通的Rust函数在调用.system()这个方法之后,将被转换为一个Box<dyn System>,对于群集支持的两种系统,采用IntoForEachSystem和IntoQuerySystem这两个trait进行转换。// 具体代码可以去群集的文档里看,这里只举例了IntoQuerySystem这个trait
pub trait IntoQuerySystem<Commands,R,Q> { fn system(self) -> Box<dyn System>;}
有了trait之后只需要把trait实现给我们可能会调用的函数,一个一个函数的去实现肯定是不可能的,翻看群集的这部分源码能够看到大量的使用了宏:具体的代码可以去看群集的源码,总结来说,群集实现的这种及其符合人体工程学的ECS架构,就是基于宏加上trait来实现的。宏的部分十分值得仔细研究,推特原文作者也是正在研究其中的东西,截至日报更新时还没有新的成果,后续可以直接去关注该条推特。推文链接:https://twitter.com/yaahc_/status/1293567953875505152?s=20Rust写数据可视化的一个小教程
该文用到了plotly库,是一个可以动手实验的小教程。教程原文:https://shahinrostami.com/posts/programming/rust-notebooks/box-plots-at-the-olympics/OrbTk 0.3.1-alpha3发布了
之前关注过Redox的应该知道OrbTk是他们团队给该操作系统设计的Gui库,现在这个库在crates.io发布了最新的版本,相较于之前性能更好了,也有了新的主题切换引擎可以选择。还更新了三种UI组件(ProgressBar,NumericBox,TabWidget)。Read More:https://github.com/redox-os/orbtk/releases/tag/0.3.1-alpha3“Rust没有稳定的ABI”
作者见过GNOME的用户(通常是在C库上工作了很长时间的人)表达以下问题:
- 编译的Rust代码没有稳定的ABI(应用程序二进制接口)。
- 同时,Rust还将其整个标准库与它所编译的每个二进制文件捆绑在一起,这使得Rust构建的库非常庞大。
作者是那种认为大部分基础设施都应该用Rust重写的人,所以这些问题,也是作者本人非常关注的事。Read More:https://people.gnome.org/~federico/blog/rust-stable-abi.htmldocs.rs 已经更新了文档覆盖功能
关于构建者模式的一个简短介绍
Read More:https://matklad.github.io/2020/08/12/who-builds-the-builder.htmlThis Week in Rust
每周官方都会更新的This Week in Rust又更新了。基本上最近有关Rust的动向里面都收集了,个人一直比较关注的是Tooling类的动向吧,rust-analyzer越来越好用了。其他动向日报基本都涉及过了,这里不再提及,主要说两个,一个是每月都会更新一次的Rust GameDev,以及最近才更新的区块链相关动向。Rust GameDev:https://rust-gamedev.github.io/posts/newsletter-012/Blockchain:https://rustinblockchain.org/newsletters/2020-08-05-are-we-smart-contract-yet/Read More:https://this-week-in-rust.org/blog/2020/08/11/this-week-in-rust-351/
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。