Merge branch 'feature/scrollables' into feature/text-input
This commit is contained in:
commit
374b54c3ec
4 changed files with 22 additions and 27 deletions
|
|
@ -13,5 +13,5 @@ wgpu = { version = "0.3", git = "https://github.com/gfx-rs/wgpu-rs", rev = "ed2c
|
|||
wgpu_glyph = { version = "0.4", git = "https://github.com/hecrj/wgpu_glyph", rev = "954ac865ca1b7f6b97bf403f8c6174a7120e667c" }
|
||||
raw-window-handle = "0.3"
|
||||
image = "0.22"
|
||||
nalgebra = "0.18"
|
||||
glam = "0.8"
|
||||
log = "0.4"
|
||||
|
|
|
|||
|
|
@ -222,11 +222,9 @@ impl Pipeline {
|
|||
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,
|
||||
|
|
|
|||
|
|
@ -23,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,
|
||||
|
|
@ -169,11 +167,9 @@ impl Pipeline {
|
|||
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,
|
||||
|
|
|
|||
|
|
@ -1,29 +1,30 @@
|
|||
use nalgebra::Matrix3;
|
||||
use glam::{Mat4, Vec3, Vec4};
|
||||
use std::ops::Mul;
|
||||
|
||||
/// A 2D transformation matrix.
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub struct Transformation(Matrix3<f32>);
|
||||
pub struct Transformation(Mat4);
|
||||
|
||||
impl Transformation {
|
||||
/// Get the identity transformation.
|
||||
pub fn identity() -> Transformation {
|
||||
Transformation(Matrix3::identity())
|
||||
Transformation(Mat4::identity())
|
||||
}
|
||||
|
||||
/// Creates an orthographic projection.
|
||||
#[rustfmt::skip]
|
||||
pub fn orthographic(width: u16, height: u16) -> Transformation {
|
||||
Transformation(nalgebra::Matrix3::new(
|
||||
2.0 / f32::from(width), 0.0, -1.0,
|
||||
0.0, 2.0 / f32::from(height), -1.0,
|
||||
0.0, 0.0, 1.0
|
||||
Transformation(Mat4::from_cols(
|
||||
Vec4::new(2.0 / f32::from(width), 0.0, 0.0, 0.0),
|
||||
Vec4::new(0.0, 2.0 / f32::from(height), 0.0, 0.0),
|
||||
Vec4::new(0.0, 0.0, -1.0, 0.0),
|
||||
Vec4::new(-1.0, -1.0, 0.0, 1.0)
|
||||
))
|
||||
}
|
||||
|
||||
/// Creates a translate transformation.
|
||||
pub fn translate(x: f32, y: f32) -> Transformation {
|
||||
Transformation(Matrix3::new_translation(&nalgebra::Vector2::new(x, y)))
|
||||
Transformation(Mat4::from_translation(Vec3::new(x, y, 0.0)))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -35,14 +36,14 @@ impl Mul for Transformation {
|
|||
}
|
||||
}
|
||||
|
||||
impl AsRef<[f32; 16]> for Transformation {
|
||||
fn as_ref(&self) -> &[f32; 16] {
|
||||
self.0.as_ref()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Transformation> for [f32; 16] {
|
||||
#[rustfmt::skip]
|
||||
fn from(t: Transformation) -> [f32; 16] {
|
||||
[
|
||||
t.0[0], t.0[1], 0.0, t.0[2],
|
||||
t.0[3], t.0[4], 0.0, t.0[5],
|
||||
0.0, 0.0, -1.0, 0.0,
|
||||
t.0[6], t.0[7], 0.0, t.0[8]
|
||||
]
|
||||
t.as_ref().clone()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue