标签: rust-piston

当我每次渲染屏幕时都不调用`graphics :: clear`时,如何阻止Piston使屏幕闪烁?

考虑两个程序,以及它们之间的区别:

$ diff flashes/src/main.rs doesnt_flash/src/main.rs
22,23c22
<
<     let mut i = 0;
---
>     let mut cursor_poses: Vec<(f64, f64)> = Vec::new();
28c27
<             mx = x; my = y;
---
>             cursor_poses.push((x,y));
32,33c31,33
<                     if i == 0 {
<                         graphics::clear([1.0; 4], g);
---
>                     graphics::clear([1.0; 4], g);
>                     for &(x, y) in cursor_poses.iter() {
>                         draw_cursor_pos([x, y], &c, g);
35,36d34
<                     draw_cursor_pos([mx, my], &c, g);
<                     i+=1;
Run Code Online (Sandbox Code Playgroud)

这两个节目的视频演示.

该程序是一个非常基本的绘图程序,只有一个画笔宽度,画笔笔触颜色,画布大小,没有保存等; 哦,要停止绘画,将鼠标移出窗口,因为每次你越过窗户,这都算作绘图;-)

flashes.rse.render_args()除了第一次以外,每次都不会绘制每个像素.doesnt_flash.rs …

rust rust-piston

16
推荐指数
1
解决办法
693
查看次数

错误[E0658]:`cfg(doctest)` 是实验性的,可能会发生变化

我对 Rust 比较陌生,当我遇到此错误时,我正尝试使用在线教程构建游戏。有人可以告诉我这个错误是什么以及如何解决它吗?

我使用rustup default nightly:- 从稳定的 Rust 版本切换到 nightly 版本rustc 1.46.0-nightly (feb3536eb 2020-06-09)。仍然错误没有消失

这些是我尝试安装的依赖项:

piston = "0.50.0"
piston2d-graphics = "0.36.0"
pistoncore-glutin_window = "0.64.0"
piston2d-opengl_graphics = "0.72.0"
Run Code Online (Sandbox Code Playgroud)

提前致谢!!

rust rust-piston

7
推荐指数
1
解决办法
887
查看次数

如何编码 Rust Piston 图像并在内存中获取结果?

我正在使用Pistonimage来生成图像。

fn get_image() -> image::DynamicImage {
    image::DynamicImage::ImageRgba8(image::ImageBuffer::new(512, 512))
}
Run Code Online (Sandbox Code Playgroud)

我有一个hyper网络服务器,我想从中提供动态生成的图像。

基于如何在 Rust 中创建可用作读取器或写入器的内存中对象的答案,我想我可以使用 aCursor<Vec<u8>>作为目的地。但是,image似乎只提供了一种写入文件名的方法,而不是Writer像我的光标那样。

在查看了image的文档后,我希望可能有某种方法可以直接使用image::png::PNGEncoder结构。它提供了一个公共方法encode(self, data: &[u8], width: u32, height: u32, color: ColorType) -> Result<()>。但是,我不确定data参数应该是什么,而且我找不到 .s 使用的ColorTypes 的任何公共声明ImageBuffer

(&Get, "/image.png") => {
    let v = {
        let generated = get_image();
        let mut encoded_image = Cursor::new(Vec::new());
        let (width, heigth) = …
Run Code Online (Sandbox Code Playgroud)

image rust rust-piston

5
推荐指数
1
解决办法
1554
查看次数

为什么 Piston text() 需要对字形缓存的可变引用?

我很好奇为什么text()可变借用字形缓存:

cache: &mut C
Run Code Online (Sandbox Code Playgroud)

我的理解是字形缓存表示从字体文件加载的静态字符(字形)。为什么那些需要能够被底层图形系统改变?

rust rust-piston

4
推荐指数
1
解决办法
569
查看次数

如何将Vec <Rgb <u8 >>转换为Vec <u8>

使用Piston image箱子,我可以通过喂它来写一个图像Vec<u8>,但我的实际数据是Vec<Rgb<u8>>(因为这更容易处理,我想动态增长它).

我怎样才能转换Vec<Rgb<u8>>Vec<u8>Rgb<u8>真的[u8; 3].这必须是unsafe转换吗?

rust rust-piston

2
推荐指数
1
解决办法
259
查看次数

试图让类型 `PointerState` 未初始化

我想尝试使用 Piston 在 Rust 中制作游戏。这是我第一次使用这个库。我从官方文档中获取了这段代码来测试它。但是,当我的鼠标触摸应用程序窗口时,它会立即关闭,我不明白为什么。

extern crate glutin_window;
extern crate graphics;
extern crate opengl_graphics;
extern crate piston;

use glutin_window::GlutinWindow as Window;
use opengl_graphics::{GlGraphics, OpenGL};
use piston::event_loop::{EventSettings, Events};
use piston::input::{RenderArgs, RenderEvent, UpdateArgs, UpdateEvent};
use piston::window::WindowSettings;

pub struct App {
    gl: GlGraphics, // OpenGL drawing backend.
    rotation: f64,  // Rotation for the square.
}

impl App {
    fn render(&mut self, args: &RenderArgs) {
        use graphics::*;

        const GREEN: [f32; 4] = [0.0, 1.0, 0.0, 1.0];
        const RED: [f32; 4] = [1.0, 0.0, 0.0, …
Run Code Online (Sandbox Code Playgroud)

rust rust-piston

2
推荐指数
1
解决办法
640
查看次数

几分钟后,活塞应用程序因内存分配错误而崩溃

我使用Rust中的Piston开发了一个迷宫游戏,以便自学图形/ UI编程.游戏大多数工作正常,但是当我使用大型迷宫运行它(例如120 x 72矩形)时,游戏会在几分钟后因内存分配错误而崩溃.

一个简化的例子如下:

extern crate graphics;
extern crate opengl_graphics;
extern crate piston;
extern crate piston_window;

use opengl_graphics::OpenGL;
use piston::event_loop::*;
use piston::input::*;
use piston_window::{PistonWindow, WindowSettings};

const BLACK: [f32; 4] = [0.0, 0.0, 0.0, 1.0];
const WHITE: [f32; 4] = [1.0, 1.0, 1.0, 1.0];

fn main() {
    let opengl = OpenGL::V3_2;

    let mut window: PistonWindow = WindowSettings::new("maze", [800, 600])
        .opengl(opengl)
        .exit_on_esc(true)
        .build()
        .unwrap();

    let mut events = Events::new(EventSettings::new());

    while let Some(event) = events.next(&mut window) {
        if let Some(_args) = event.render_args() …
Run Code Online (Sandbox Code Playgroud)

out-of-memory rust rust-piston

1
推荐指数
1
解决办法
295
查看次数

标签 统计

rust ×7

rust-piston ×7

image ×1

out-of-memory ×1