bevy vulkan render crate
This commit is contained in:
parent
760366a0e4
commit
fd1855dc73
|
|
@ -4,7 +4,8 @@ resolver = "2"
|
|||
members = [
|
||||
"crates/renderer",
|
||||
"crates/window",
|
||||
"crates/game"
|
||||
"crates/game",
|
||||
"crates/text", "crates/bevy_vulkan_render",
|
||||
]
|
||||
|
||||
[profile.debug-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