bevy vulkan render crate
This commit is contained in:
parent
760366a0e4
commit
fd1855dc73
|
|
@ -4,8 +4,9 @@ resolver = "2"
|
||||||
members = [
|
members = [
|
||||||
"crates/renderer",
|
"crates/renderer",
|
||||||
"crates/window",
|
"crates/window",
|
||||||
"crates/game"
|
"crates/game",
|
||||||
]
|
"crates/text", "crates/bevy_vulkan_render",
|
||||||
|
]
|
||||||
|
|
||||||
[profile.debug-release]
|
[profile.debug-release]
|
||||||
inherits = "release"
|
inherits = "release"
|
||||||
|
|
|
||||||
11
crates/bevy_vulkan_render/Cargo.toml
Normal file
11
crates/bevy_vulkan_render/Cargo.toml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[package]
|
||||||
|
name = "bevy_vulkan_render"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bevy_ecs = { workspace = true }
|
||||||
|
bevy_app = { workspace = true }
|
||||||
|
bevy_tasks = { workspace = true }
|
||||||
|
bevy_window = { workspace = true }
|
||||||
|
renderer = { path = "../renderer" }
|
||||||
54
crates/bevy_vulkan_render/src/lib.rs
Normal file
54
crates/bevy_vulkan_render/src/lib.rs
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
use bevy_app::prelude::*;
|
||||||
|
use bevy_ecs::prelude::*;
|
||||||
|
|
||||||
|
use bevy_app::AppLabel;
|
||||||
|
use bevy_ecs::schedule::ScheduleLabel;
|
||||||
|
use bevy_window::{PrimaryWindow, RawHandleWrapperHolder};
|
||||||
|
|
||||||
|
/// The main render schedule.
|
||||||
|
#[derive(ScheduleLabel, Debug, Hash, PartialEq, Eq, Clone, Default)]
|
||||||
|
pub struct Render;
|
||||||
|
|
||||||
|
/// The startup schedule of the [`RenderApp`]
|
||||||
|
#[derive(ScheduleLabel, Debug, Hash, PartialEq, Eq, Clone, Default)]
|
||||||
|
pub struct RenderStartup;
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct VulkanRenderPlugin;
|
||||||
|
|
||||||
|
/// A label for the rendering sub-app.
|
||||||
|
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, AppLabel)]
|
||||||
|
pub struct RenderApp;
|
||||||
|
|
||||||
|
impl Plugin for VulkanRenderPlugin {
|
||||||
|
fn build(&self, app: &mut bevy_app::App) {
|
||||||
|
app.add_systems(Startup, startup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn init_vulkan(app: &mut App) {
|
||||||
|
let mut window_query = app
|
||||||
|
.world_mut()
|
||||||
|
.query_filtered::<&RawHandleWrapperHolder, With<PrimaryWindow>>();
|
||||||
|
|
||||||
|
let primary_window = window_query.single(app.world()).ok().cloned();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn initialize_render_app(app: &mut App) {
|
||||||
|
let mut render_app = SubApp::new();
|
||||||
|
render_app.update_schedule = Some(Render.intern());
|
||||||
|
|
||||||
|
let mut should_run_startup = true;
|
||||||
|
render_app.set_extract(move |main, render| {
|
||||||
|
if should_run_startup {
|
||||||
|
render.run_schedule(RenderStartup);
|
||||||
|
should_run_startup = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// extract logic here
|
||||||
|
});
|
||||||
|
|
||||||
|
app.insert_sub_app(RenderApp, render_app);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn startup() {}
|
||||||
Loading…
Reference in a new issue