writing brick to gpu

This commit is contained in:
Piotrek
2021-04-23 13:34:18 +02:00
parent 6239e145e9
commit 936c0f2e18
2 changed files with 29 additions and 11 deletions
+7 -2
View File
@@ -15,6 +15,7 @@ pub struct Renderer {
raster_buffer: RasterBuffer,
uniform_buffer: UniformBuffer,
node_buffer: NodeBuffer,
brick_buffer: BrickBuffer,
// Camera
pub camera: Camera,
}
@@ -105,16 +106,19 @@ impl Renderer {
// Buffers
let uniform_buffer = UniformBuffer::new(&device);
let raster_buffer = RasterBuffer::new(&device);
let mut node_buffer = NodeBuffer::new(&device);
node_buffer.write(&queue);
let mut brick_buffer = BrickBuffer::new(&device);
brick_buffer.write(&queue);
// Pipeline
let pipeline = Self::create_pipeline(&device, &swapchain_desc, &[&uniform_buffer.bind_layout, &node_buffer.bind_layout]);
let pipeline = Self::create_pipeline(&device, &swapchain_desc, &[&uniform_buffer.bind_layout, &node_buffer.bind_layout, &brick_buffer.bind_layout]);
// Save values in app
println!("Initialized");
Self { surface, device, queue, swapchain_desc, swapchain, pipeline, raster_buffer, uniform_buffer, node_buffer, camera }
Self { surface, device, queue, swapchain_desc, swapchain, pipeline, raster_buffer, uniform_buffer, node_buffer, brick_buffer, camera }
}
pub fn resize(&mut self, new_size: Option<PhysicalSize<u32>>) {
@@ -162,6 +166,7 @@ impl Renderer {
render_pass.set_pipeline(&self.pipeline);
render_pass.set_bind_group(0, &self.uniform_buffer.bind_group, &[]);
render_pass.set_bind_group(1, &self.node_buffer.bind_group, &[]);
render_pass.set_bind_group(2, &self.brick_buffer.bind_group, &[]);
// Vertices and indices
render_pass.set_vertex_buffer(0, self.raster_buffer.vertex_buffer.slice(..));
render_pass.set_index_buffer(self.raster_buffer.index_buffer.slice(..), wgpu::IndexFormat::Uint16);