Split Mesh data and Pipeline
This commit is contained in:
parent
4f96a1e4b5
commit
078e9daba9
13 changed files with 331 additions and 109 deletions
|
@ -5,11 +5,14 @@ use crate::core::app::DEPTH_IMAGE_ID;
|
|||
use crate::core::app::context::WindowContext;
|
||||
use crate::core::app::user_event::UserEvent;
|
||||
use crate::core::render::primitives::camera::Camera3D;
|
||||
use crate::core::render::primitives::mvp::Mvp;
|
||||
use crate::core::render::primitives::transform::Transform;
|
||||
use crate::core::render::primitives::{AsBindableDescriptorSet, AsRecordable};
|
||||
use crate::core::render::render_pass_manager::{RenderPassConfig, RenderPassManager};
|
||||
use crate::core::render::texture::Texture;
|
||||
use crate::core::scene::Scene;
|
||||
use crate::game::assets::square::Square;
|
||||
use crate::game::assets::meshs::square::Square;
|
||||
use crate::game::assets::pipelines::simple::{SimplePipeline, SimplePipelineRenderData};
|
||||
use egui_winit_vulkano::egui;
|
||||
use glam::EulerRot;
|
||||
use glam::Quat;
|
||||
|
@ -22,6 +25,7 @@ use winit::window::CursorGrabMode;
|
|||
|
||||
pub struct MainSceneState {
|
||||
square: Square,
|
||||
simple_pipeline: SimplePipeline,
|
||||
instances: Vec<Transform>,
|
||||
camera: Camera3D,
|
||||
texture: Texture,
|
||||
|
@ -46,9 +50,9 @@ impl Scene for MainScene {
|
|||
let swapchain_image_view =
|
||||
app_context.with_renderer(|renderer| renderer.swapchain_image_view().clone());
|
||||
|
||||
let square = Square::new(
|
||||
let square = Square::new(&app_context.memory_allocator)?;
|
||||
let simple_pipeline = SimplePipeline::new(
|
||||
&app_context.device,
|
||||
&app_context.memory_allocator,
|
||||
swapchain_image_view.format(),
|
||||
depth_image_view.format(),
|
||||
)?;
|
||||
|
@ -103,6 +107,7 @@ impl Scene for MainScene {
|
|||
|
||||
self.state = Some(MainSceneState {
|
||||
square,
|
||||
simple_pipeline,
|
||||
instances,
|
||||
camera,
|
||||
texture,
|
||||
|
@ -198,20 +203,20 @@ impl Scene for MainScene {
|
|||
|
||||
// Create camera uniform using the actual camera
|
||||
let camera_uniform = state.camera.create_buffer(&app_context.memory_allocator)?;
|
||||
|
||||
let transform_uniform =
|
||||
Transform::create_buffer(&app_context.memory_allocator, &state.instances)?;
|
||||
|
||||
state
|
||||
.square
|
||||
.render(
|
||||
&mut builder,
|
||||
&app_context.descriptor_set_allocator,
|
||||
&camera_uniform,
|
||||
&transform_uniform,
|
||||
&state.texture,
|
||||
)
|
||||
.unwrap();
|
||||
SimplePipeline::record_render_commands(
|
||||
&mut builder,
|
||||
&app_context.descriptor_set_allocator,
|
||||
state.simple_pipeline.pipeline(),
|
||||
&SimplePipelineRenderData {
|
||||
mesh: &state.square,
|
||||
mvp_uniform: &camera_uniform,
|
||||
texture: &state.texture,
|
||||
instances: &transform_uniform,
|
||||
},
|
||||
)?;
|
||||
|
||||
RenderPassManager::end_rendering(&mut builder)?;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue