问题标签 [rust-piston]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 为什么 Piston text() 需要对字形缓存的可变引用?
我很好奇为什么text()
要可变借用字形缓存:
我的理解是字形缓存代表从字体文件加载的静态字符(字形)。为什么那些需要能够被底层图形系统变异?
rust - 创建后如何更改 PistonWindow 的分辨率?
我想PistonWindow
在创建后更改 a 的分辨率。这将允许用户在玩游戏时更改窗口的分辨率。
WindowSettings
有一个set_size
方法,但是在创建类型后似乎无法访问PistonWindow
。
一个简化的例子:
rust - 调用 sprite::Scene::draw 时类型不匹配
我正在使用 Piston 和 Sprite 进行个人项目。示例代码调用此方法:
我正在尝试调用一种方法来绘制所有内容。我第一次尝试:
然后编译器告诉我我需要给它一个类型参数Scene
所以我尝试了这个:
然后编译器告诉我该类型需要实现特征ImageSize
所以我尝试了这个:
然后我得到了这个错误:
我不明白编译器在这里想说什么。的完整类型Scene
是,sprite::Scene<piston_window::Texture<gfx_device_gl::Resources>>
但我不想在方法的签名中写下它。
那我有两个问题:
- 编译器想告诉我什么?
- 如何将场景传递给方法?
rust - 使用活塞有效地绘制路径
Piston 的图形库提供了在两点之间画一条线的功能,但最多只能画两条线。如何有效地绘制通过许多点的路径,而不必为每个段绘制一条线?
假设我有以下代码:
有没有办法把它变成这样的东西?
我被推荐到里昂图书馆,但我不知道如何将它与活塞一起使用。
rust - Rust 中存储要用作活塞纹理或精灵的对象集合的惯用方式是什么?
我看到的所有访问纹理对象的示例都是执行以下操作:
这给人的印象是,为了拥有一组纹理,它应该类似于let mut images: Vec<Texture>;
,但from_path
返回一个Result<Texture<R>, String>
.
并且它Texture<R>
确实阻碍了它。为了能够制作一个Texture<R>
,需要大量的crates
和use ...
是完全错误的。
是正确的事情:
或者拉动活塞拥有的几乎所有东西?或者是其他东西?
我的目标是拥有
我试图避免拉入的板条箱是gfx_device_gl
. 包含这个创建感觉是错误的,如果我已经包含了诸如活塞之类的游戏引擎,它似乎有点低水平。
rust - 当我每次渲染屏幕时不调用`graphics::clear`时,如何阻止活塞使屏幕闪烁?
考虑两个程序,以及它们之间的区别:
该程序是一个非常基础的绘画程序,只有一个画笔宽度,画笔笔触颜色,画布大小,不保存等;哦,要停止绘图,请将鼠标移出窗口,因为每次越过窗口时,这都算作绘图;-)
flashes.rs
e.render_args()
除了第一次之外,每次都不会绘制每个像素。doesnt_flash.rs
每次e.render_args()
达到时都会绘制每个像素。这是两个程序之间的唯一区别。
虽然在这个程序中生成内容并不需要很长时间,所以当鼠标在窗口上移动时重新生成数百次是可以接受的,这似乎效率低下。理论上,随着越来越多的点被添加到屏幕上,每次迭代gl.draw
需要的时间越来越长。在实践中,调用graphics::ellipse
一次与一万次之间的差异在现代硬件上并不显着。
我想写的其他程序没有那么奢侈,因为生成结果并放在屏幕上需要更长的时间。
在仔细阅读 API 时,我没有想出明显的方法来“什么都不做”。我假设我必须将屏幕更改写入某个缓冲区对象,然后在调用GlGraphics
时反馈此缓冲区对象,e.render_args()
但我不需要更新屏幕。
问题是,我似乎找不到这个缓冲区对象。:-(
我怎样才能“什么都不做”而不让屏幕闪烁?如果我的理论是正确的,我怎样才能绘制到GlGraphics
缓冲区而不是屏幕,然后当我没有任何新东西要绘制时将缓冲区反馈回屏幕?
货运.toml
dont_flash.rs
闪光灯.rs
rust - 如何在纹理中绘制图元?
当我想在 Piston 中绘制一些图元时,我会这样做:
此代码在缓冲区中绘制一个矩形并将其显示在屏幕上。但是如果我想在纹理中绘制一些图元(即保留缓冲区以便重用它)怎么办?我不确定库优化,如果我能做到这一点,我可以少画数百个三角形。
rust - 活塞 GenericEvent 未为 Event 实现
我正在尝试使用活塞窗口(0.77.0)库在 Rust 中编写游戏。从他们的hello world示例开始,我想我会先将渲染逻辑分离为使用 Event 作为参数的方法,因为根据文档,它是由window.next()
.
然而,这以错误结束:
self.window.draw_2d(&event, |context, graphics| {
特征piston_window::GenericEvent
未实现&piston_window::Event
没有提取渲染方法的代码按预期工作。
我怎样才能提取这个?有什么我忽略的吗?
image - Rust - 图像箱:保存图像缓冲区的问题
在为图像箱提供的示例中,我有一个与分形示例(“6.2 生成分形”部分,https://github.com/PistonDevelopers/image )相关的问题
1)在线
我收到以下编译错误消息(rustc 1.25.0):
感谢您的帮助!
2)另外注意我必须改变
至
在示例的开头。也许 crate num_complex 不再存在?
image - 如何对 Rust Piston 图像进行编码并在内存中获取结果?
我正在使用Pistonimage
包生成图像。
我有一个hyper
网络服务器,我想从中提供动态生成的图像。
基于如何在 Rust 中创建可用作 Reader 或 Writer 的内存对象的答案?,我想我也许可以使用 aCursor<Vec<u8>>
作为目的地。但是,image
似乎只提供了一种写入文件名的方法,而不是Writer
像我的光标。
在查看了image
的文档后,我希望可能有一些方法可以直接使用该image::png::PNGEncoder
结构。它提供了一个公共方法encode(self, data: &[u8], width: u32, height: u32, color: ColorType) -> Result<()>
。但是,我不确定该data
论点应该是什么,并且我找不到ColorType
. 使用的 s 的任何公开声明ImageBuffer
。
如何将活塞编码为GenericImage
PNG 等格式并将结果存储在内存中?