Hide Storage from Primitive for type-safety
This commit is contained in:
parent
6a1cd02b3a
commit
53a98bf7de
5 changed files with 129 additions and 45 deletions
|
|
@ -128,26 +128,25 @@ impl Primitive {
|
|||
}
|
||||
|
||||
impl shader::Primitive for Primitive {
|
||||
fn prepare(
|
||||
type Renderer = Pipeline;
|
||||
|
||||
fn initialize(
|
||||
&self,
|
||||
device: &wgpu::Device,
|
||||
queue: &wgpu::Queue,
|
||||
format: wgpu::TextureFormat,
|
||||
storage: &mut shader::Storage,
|
||||
) -> Pipeline {
|
||||
Pipeline::new(device, queue, format)
|
||||
}
|
||||
|
||||
fn prepare(
|
||||
&self,
|
||||
pipeline: &mut Pipeline,
|
||||
device: &wgpu::Device,
|
||||
queue: &wgpu::Queue,
|
||||
_bounds: &Rectangle,
|
||||
viewport: &Viewport,
|
||||
) {
|
||||
if !storage.has::<Pipeline>() {
|
||||
storage.store(Pipeline::new(
|
||||
device,
|
||||
queue,
|
||||
format,
|
||||
viewport.physical_size(),
|
||||
));
|
||||
}
|
||||
|
||||
let pipeline = storage.get_mut::<Pipeline>().unwrap();
|
||||
|
||||
// Upload data to GPU
|
||||
pipeline.update(
|
||||
device,
|
||||
|
|
@ -161,14 +160,11 @@ impl shader::Primitive for Primitive {
|
|||
|
||||
fn render(
|
||||
&self,
|
||||
pipeline: &Pipeline,
|
||||
encoder: &mut wgpu::CommandEncoder,
|
||||
storage: &shader::Storage,
|
||||
target: &wgpu::TextureView,
|
||||
clip_bounds: &Rectangle<u32>,
|
||||
) {
|
||||
// At this point our pipeline should always be initialized
|
||||
let pipeline = storage.get::<Pipeline>().unwrap();
|
||||
|
||||
// Render primitive
|
||||
pipeline.render(
|
||||
target,
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ impl Pipeline {
|
|||
device: &wgpu::Device,
|
||||
queue: &wgpu::Queue,
|
||||
format: wgpu::TextureFormat,
|
||||
target_size: Size<u32>,
|
||||
) -> Self {
|
||||
//vertices of one cube
|
||||
let vertices =
|
||||
|
|
@ -62,8 +61,8 @@ impl Pipeline {
|
|||
let depth_texture = device.create_texture(&wgpu::TextureDescriptor {
|
||||
label: Some("cubes depth texture"),
|
||||
size: wgpu::Extent3d {
|
||||
width: target_size.width,
|
||||
height: target_size.height,
|
||||
width: 1,
|
||||
height: 1,
|
||||
depth_or_array_layers: 1,
|
||||
},
|
||||
mip_level_count: 1,
|
||||
|
|
@ -297,7 +296,7 @@ impl Pipeline {
|
|||
uniforms,
|
||||
uniform_bind_group,
|
||||
vertices,
|
||||
depth_texture_size: target_size,
|
||||
depth_texture_size: Size::new(1, 1),
|
||||
depth_view,
|
||||
depth_pipeline,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue