gpt4 book ai didi

rust - 为什么 Bevy 无法绘制我的许多 SpriteComponents?

转载 作者:行者123 更新时间:2023-12-03 11:37:03 26 4
gpt4 key购买 nike

以下程序是大量 SpriteComponents 的一个非常简约的示例。在此示例中,使用 FPS 计数器,您可以看到 SpriteComponents 的成本似乎是多么高。
我确实注意到,如果我重用 Material 句柄,它确实会加快速度,但即便如此,速度还是非常慢。另外,我不确定重复使用 Material handle 有多安全。我注意到在突破示例中,它们没有重用句柄。
尽管如此,在没有其他系统的情况下,我每秒可以得到大约 10 帧。

use bevy:: {
prelude::*,
};

struct Box;
struct Name(String);
#[derive(Default)]
struct FPSCounter(Timer,u32);


const WIDTH: f32 = 640.0;
const HEIGHT: f32 = 480.0;

pub struct drawPlugin;

impl Plugin for drawPlugin {
fn build(&self, app: &mut AppBuilder) {
app
.add_resource(FPSCounter(Timer::from_seconds(1.0,true),0))
.add_startup_system(setup.system())
.add_system(fps_counter.system());
}
}

fn fps_counter(time: Res<Time>, mut timer: ResMut<FPSCounter>) {
timer.0.tick(time.delta_seconds);
timer.1 += 1;
if timer.0.finished {
println!("One-{}",timer.1);
timer.1 = 0;
}
}

fn main() {
App::build()
.add_resource(WindowDescriptor {
title: "Test Prog!".to_string(),
width: WIDTH as u32,
height: HEIGHT as u32,
vsync: true,
resizable: false,
..Default::default()
})
.add_default_plugins()
.add_plugin(drawPlugin)
.run();
}

fn setup(mut cmds: Commands, mut mats: ResMut<Assets<ColorMaterial>>,asset_server: Res<AssetServer>) {
const sq_width: f32 = 10.0;
const sq_height: f32 = 10.0;
let left = -(WIDTH /2.0) + sq_width / 2.0;
let right = (WIDTH / 2.0) - sq_width / 2.0;
let top = (HEIGHT / 2.0) - sq_height / 2.0;
let bot = -(HEIGHT / 2.0) + sq_height / 2.0;
let mymat = mats.add(Color::rgb(1.0,0.0,0.0).into());
cmds
.spawn(Camera2dComponents::default())
.spawn(UiCameraComponents::default());
for box_num2 in 1..=30 {
for box_num in 1..=30 {
cmds.spawn(SpriteComponents {
material: mymat,
translation: Translation(Vec3::new(left + ((sq_width + 1.0) * box_num as f32),top - ((sq_height + 1.0) * box_num2 as f32),0.0)),
sprite: Sprite {
size: Vec2::new(sq_width,sq_height),
},
..Default::default()
}).with(Box {}).with(Name("Box1".to_string()));
}
}
}

最佳答案

这里可能有几件事。

  • Bevy 尚未在渲染器中进行任何批处理,
  • Rust Debug模式很慢,这里讨论 https://github.com/bevyengine/bevy/issues/346 .

  • 听起来这对你来说主要是第二个问题。要解决这个问题,您可以运行 Debug模式并在 cargo.toml 中设置一些优化。 .例如我有
    [profile.dev]
    opt-level = 3
    这使得初始构建有点慢,但在那之后它似乎对构建时间没有太大的影响。如果要进行更详细的调试,您可能会发现需要调整或删除此设置。

    关于rust - 为什么 Bevy 无法绘制我的许多 SpriteComponents?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63590141/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com