summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/renderer.rs')
-rw-r--r--wgpu/src/renderer.rs21
1 files changed, 14 insertions, 7 deletions
diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs
index e93090b8..29adcfb6 100644
--- a/wgpu/src/renderer.rs
+++ b/wgpu/src/renderer.rs
@@ -26,7 +26,7 @@ struct Layer<'a> {
offset: Vector<u32>,
quads: Vec<Quad>,
images: Vec<Image>,
- meshes: Vec<Arc<triangle::Mesh2D>>,
+ meshes: Vec<(Point, Arc<triangle::Mesh2D>)>,
text: Vec<wgpu_glyph::Section<'a>>,
}
@@ -51,7 +51,8 @@ impl Renderer {
let text_pipeline = text::Pipeline::new(device, settings.default_font);
let quad_pipeline = quad::Pipeline::new(device);
let image_pipeline = crate::image::Pipeline::new(device);
- let triangle_pipeline = triangle::Pipeline::new(device);
+ let triangle_pipeline =
+ triangle::Pipeline::new(device, settings.antialiasing);
Self {
quad_pipeline,
@@ -105,6 +106,8 @@ impl Renderer {
&layer,
encoder,
target.texture,
+ width,
+ height,
);
}
@@ -229,8 +232,8 @@ impl Renderer {
scale: [bounds.width, bounds.height],
});
}
- Primitive::Mesh2D(mesh) => {
- layer.meshes.push(mesh.clone());
+ Primitive::Mesh2D { origin, buffers } => {
+ layer.meshes.push((*origin, buffers.clone()));
}
Primitive::Clip {
bounds,
@@ -308,22 +311,26 @@ impl Renderer {
layer: &Layer<'_>,
encoder: &mut wgpu::CommandEncoder,
target: &wgpu::TextureView,
+ target_width: u32,
+ target_height: u32,
) {
let bounds = layer.bounds * scale_factor;
if layer.meshes.len() > 0 {
let translated = transformation
+ * Transformation::scale(scale_factor, scale_factor)
* Transformation::translate(
- -(layer.offset.x as f32) * scale_factor,
- -(layer.offset.y as f32) * scale_factor,
+ -(layer.offset.x as f32),
+ -(layer.offset.y as f32),
);
self.triangle_pipeline.draw(
device,
encoder,
target,
+ target_width,
+ target_height,
translated,
- scale_factor,
&layer.meshes,
bounds,
);