在 Bevy 游戏引擎中将 1000x1000 像素纹理分配给 SpriteSheetBundle 大约需要 5 秒

It takes like 5 seconds to assign a 1000x1000 pixel texture to a SpriteSheetBundle in the Bevy game engine

有没有办法改善这种情况,还是我只是用错了引擎? 我试图通过首先创建和生成质量较低的背景图像来解决这个问题。

fn spawn_background(commands: &mut Commands, texture: Res<Textures>) {
    commands
        .spawn(SpriteSheetBundle {
            texture_atlas: texture.background_low_texture.clone(),
            transform: Transform::from_scale(Vec3::splat(10.0)),
            ..Default::default()
        })
        .with(Dummy)
        .with(Background);

    commands
        .spawn(SpriteSheetBundle {
            texture_atlas: texture.background_med_texture.clone(),
            transform: Transform::from_scale(Vec3::splat(10.0)),
            ..Default::default()
        })
        .with(Dummy)
        .with(Background);

    commands
        .spawn(SpriteSheetBundle {
            texture_atlas: texture.background_texture.clone(),
            transform: Transform::from_scale(Vec3::splat(10.0)),
            ..Default::default()
        })
        .with(Background);
}

我正在像这样将纹理加载到“纹理”资源

fn setup(
    commands: &mut Commands, 
    asset_server: Res<AssetServer>,
    mut texture_atlases: ResMut<Assets<TextureAtlas>>,
) {

    let background_texture_handle = asset_server.load("textures/background.png");
    let background_texture_atlas = TextureAtlas::from_grid(background_texture_handle, Vec2::new(1000.0, 1000.0), 1, 1);

    let background_low_texture_handle = asset_server.load("textures/background_low.png");
    let background_low_texture_atlas = TextureAtlas::from_grid(background_low_texture_handle, Vec2::new(1000.0, 1000.0), 1, 1);

    let background_med_texture_handle = asset_server.load("textures/background_med.png");
    let background_med_texture_atlas = TextureAtlas::from_grid(background_med_texture_handle, Vec2::new(1000.0, 1000.0), 1, 1);

    commands.insert_resource(Textures {
        background_texture: texture_atlases.add(background_texture_atlas),
        background_low_texture: texture_atlases.add(background_low_texture_atlas),
        background_med_texture: texture_atlases.add(background_med_texture_atlas),
    });
}

当使用 --release 命令行选项编译时,它运行得更快,因为发布配置文件启用了优化。

See cargo documentation