summaryrefslogtreecommitdiff
path: root/client/src/renderer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/renderer.rs')
-rw-r--r--client/src/renderer.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/client/src/renderer.rs b/client/src/renderer.rs
index 3561d87..3591503 100644
--- a/client/src/renderer.rs
+++ b/client/src/renderer.rs
@@ -13,7 +13,7 @@ use winit::window::Window;
pub struct Renderer<'a> {
surface: Surface<'a>,
- queue: Queue,
+ queue: Arc<Queue>,
device: Arc<Device>,
surface_configuration: SurfaceConfiguration,
scene_pipeline: ScenePipeline,
@@ -60,10 +60,15 @@ impl<'a> Renderer<'a> {
surface.configure(&device, &surface_configuration);
let device = Arc::new(device);
+ let queue = Arc::new(queue);
+
+ let (scene_pipeline, texture_bgl) =
+ ScenePipeline::new(&device, surface_configuration.format);
+ let scene_prepare = ScenePreparer::new(device.clone(), queue.clone(), texture_bgl);
Ok(Self {
- scene_pipeline: ScenePipeline::new(&device, surface_configuration.format),
- scene_prepare: ScenePreparer::new(device.clone()),
+ scene_pipeline,
+ scene_prepare,
surface,
device,
queue,
@@ -77,6 +82,7 @@ impl<'a> Renderer<'a> {
self.surface_configuration.height = height;
self.surface
.configure(&self.device, &self.surface_configuration);
+ self.scene_pipeline.resize(&self.device, width, height);
}
pub fn draw(&mut self, scene: &SceneTree) -> Result<()> {
@@ -102,8 +108,7 @@ impl<'a> Renderer<'a> {
&mut commands,
&target_view,
scene,
- &self.scene_prepare.prefabs,
- &mut self.scene_prepare.prefabs_needed,
+ &mut self.scene_prepare.prefabs,
);
let i = self.queue.submit(Some(commands.finish()));