Fix alignment in triangle pipeline of iced_wgpu

This commit is contained in:
Héctor Ramón Jiménez 2020-04-19 21:55:33 +02:00
parent 592cc68506
commit f59832e88e

View File

@ -231,11 +231,9 @@ impl Pipeline {
// We upload everything upfront
for (origin, mesh) in meshes {
let transform = Uniforms {
transform: (transformation
* Transformation::translate(origin.x, origin.y))
.into(),
};
let transform = (transformation
* Transformation::translate(origin.x, origin.y))
.into();
let vertex_buffer = device.create_buffer_with_data(
mesh.vertices.as_bytes(),
@ -361,12 +359,28 @@ impl Pipeline {
#[derive(Debug, Clone, Copy, AsBytes)]
struct Uniforms {
transform: [f32; 16],
// We need to align this to 256 bytes to please `wgpu`...
// TODO: Be smarter and stop wasting memory!
_padding_a: [f32; 32],
_padding_b: [f32; 16],
}
impl Default for Uniforms {
fn default() -> Self {
Self {
transform: *Transformation::identity().as_ref(),
_padding_a: [0.0; 32],
_padding_b: [0.0; 16],
}
}
}
impl From<Transformation> for Uniforms {
fn from(transformation: Transformation) -> Uniforms {
Self {
transform: transformation.into(),
_padding_a: [0.0; 32],
_padding_b: [0.0; 16],
}
}
}