Scene: manage error
This commit is contained in:
parent
d9f70caec0
commit
7cbc785888
3 changed files with 53 additions and 42 deletions
|
@ -1,3 +1,4 @@
|
|||
use std::error::Error;
|
||||
use std::sync::Arc;
|
||||
use vulkano::buffer::Subbuffer;
|
||||
use vulkano::command_buffer::{AutoCommandBufferBuilder, PrimaryAutoCommandBuffer};
|
||||
|
@ -69,31 +70,34 @@ pub struct Scene {
|
|||
}
|
||||
|
||||
impl Scene {
|
||||
pub fn initialize(
|
||||
pub fn load(
|
||||
device: &Arc<Device>,
|
||||
swapchain: &Arc<Swapchain>,
|
||||
memory_allocator: &Arc<StandardMemoryAllocator>,
|
||||
) -> Scene {
|
||||
let pipeline = create_triangle_pipeline(device, swapchain);
|
||||
let vertex_buffer =
|
||||
Vertex2D::create_buffer(Vec::from_iter(VERTICES), memory_allocator).unwrap();
|
||||
) -> Result<Self, Box<dyn Error>> {
|
||||
let pipeline = create_triangle_pipeline(device, swapchain)?;
|
||||
let vertex_buffer = Vertex2D::create_buffer(Vec::from_iter(VERTICES), memory_allocator)?;
|
||||
|
||||
Scene {
|
||||
Ok(Scene {
|
||||
pipeline,
|
||||
vertex_buffer,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn render(&self, builder: &mut AutoCommandBufferBuilder<PrimaryAutoCommandBuffer>) {
|
||||
builder
|
||||
.bind_pipeline_graphics(self.pipeline.clone())
|
||||
.unwrap()
|
||||
.bind_vertex_buffers(0, self.vertex_buffer.clone())
|
||||
.unwrap();
|
||||
|
||||
pub fn render(
|
||||
&self,
|
||||
builder: &mut AutoCommandBufferBuilder<PrimaryAutoCommandBuffer>,
|
||||
) -> Result<(), Box<dyn Error>> {
|
||||
let vertex_count = self.vertex_buffer.len() as u32;
|
||||
let instance_count = vertex_count / 3;
|
||||
|
||||
unsafe { builder.draw(vertex_count, instance_count, 0, 0) }.unwrap();
|
||||
unsafe {
|
||||
builder
|
||||
.bind_pipeline_graphics(self.pipeline.clone())?
|
||||
.bind_vertex_buffers(0, self.vertex_buffer.clone())?
|
||||
.draw(vertex_count, instance_count, 0, 0)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue