summaryrefslogtreecommitdiffstats
path: root/wgpu/src/quad.rs
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/quad.rs')
-rw-r--r--wgpu/src/quad.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/wgpu/src/quad.rs b/wgpu/src/quad.rs
index adb294f0..bfbd7e2d 100644
--- a/wgpu/src/quad.rs
+++ b/wgpu/src/quad.rs
@@ -1,4 +1,5 @@
use crate::Transformation;
+use iced_native::Rectangle;
use std::mem;
@@ -22,14 +23,12 @@ impl Pipeline {
}],
});
- let matrix: [f32; 16] = Transformation::identity().into();
-
let transform = device
.create_buffer_mapped(
16,
wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST,
)
- .fill_from_slice(&matrix[..]);
+ .fill_from_slice(Transformation::identity().as_ref());
let constants = device.create_bind_group(&wgpu::BindGroupDescriptor {
layout: &constant_layout,
@@ -165,13 +164,12 @@ impl Pipeline {
encoder: &mut wgpu::CommandEncoder,
instances: &[Quad],
transformation: Transformation,
+ bounds: Rectangle<u32>,
target: &wgpu::TextureView,
) {
- let matrix: [f32; 16] = transformation.into();
-
let transform_buffer = device
.create_buffer_mapped(16, wgpu::BufferUsage::COPY_SRC)
- .fill_from_slice(&matrix[..]);
+ .fill_from_slice(transformation.as_ref());
encoder.copy_buffer_to_buffer(
&transform_buffer,
@@ -227,6 +225,12 @@ impl Pipeline {
0,
&[(&self.vertices, 0), (&self.instances, 0)],
);
+ render_pass.set_scissor_rect(
+ bounds.x,
+ bounds.y,
+ bounds.width,
+ bounds.height,
+ );
render_pass.draw_indexed(
0..QUAD_INDICES.len() as u32,