#headless #render #bevy #image #engine #rendering #texture

bevy_headless_render

Bevy引擎的一个插件,允许将无头渲染到图像中,用于主世界。

3个版本

0.1.2 2024年8月4日
0.1.1 2024年8月4日
0.1.0 2024年7月24日

328游戏开发 中排名

Download history 113/week @ 2024-07-23 144/week @ 2024-07-30

每月下载 257
用于 bevy_terminal_display

0BSD OR MIT OR Apache-2.0

14KB
218

bevy_headless_render

Crates License Tag Build Docs

Bevy引擎的一个插件,允许无头渲染。

每帧都会从 HeadlessRenderSource 渲染纹理复制到 HeadlessRenderDestination 图像中。

兼容性

包版本 Bevy版本
0.1 0.14

安装

crates.io

[dependencies]
bevy_headless_render = "0.1"

在Cargo.toml中使用git URL

[dependencies.bevy_headless_render]
git = "https://github.com/exvacuum/bevy_headless_render.git"

用法

main.rs

use bevy::prelude::*;
use bevy_headless_render;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins
            .build()
            .disable::<WinitPlugin>(),
            ScheduleRunnerPlugin::run_loop(Duration::from_secs_f32(1.0 / TICK_RATE)),
            bevy_headless_render::HeadlessRenderPlugin,
        ))
        .run();
}

当创建相机时

let size = Extent3d {
    width: 640,
    height: 480,
    depth_or_array_layers: 1,
};

let mut image = Image {
    texture_descriptor: TextureDescriptor {
        label: None,
        size,
        dimension: TextureDimension::D2,
        format: TextureFormat::R8Unorm,
        mip_level_count: 1,
        sample_count: 1,
        usage: TextureUsages::TEXTURE_BINDING
            | TextureUsages::COPY_SRC
            | TextureUsages::RENDER_ATTACHMENT,
        view_formats: &[],
    },
    ..default()
};

image.resize(size);

let image_handle = images.add(image); // ResMut<Assets<Image>>

commands.spawn((
    Camera3dBundle {
        camera: Camera {
            target: image_handle.clone().into();
            ..Default::default()
        },
        ..Default::default()
    },
    bevy_headless_render::HeadlessRenderBundle {
        source: headless_render_sources.add(HeadlessRenderSource(image_handle.clone())), // ResMut<Assets<HeadlessRenderSource>>
        destination: HeadlessRenderDestination::default(),
    },
));

HeadlessRenderDestination组件将包含提取的图像,可以用于或保存以供需要。

许可证

本软件包采用0BSD、Apache-2.0或MIT许可证,由您选择。

依赖项

~34–70MB
~1M SLoC