bevy vulkan render crate

This commit is contained in:
janis 2025-09-20 15:27:47 +02:00
parent 760366a0e4
commit fd1855dc73
3 changed files with 68 additions and 2 deletions

View file

@ -4,7 +4,8 @@ resolver = "2"
members = [
"crates/renderer",
"crates/window",
"crates/game"
"crates/game",
"crates/text", "crates/bevy_vulkan_render",
]
[profile.debug-release]

View 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" }

View 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() {}