aboutsummaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
authorJoe Wilm <joe@jwilm.com>2016-02-26 22:30:42 -0800
committerJoe Wilm <joe@jwilm.com>2016-02-26 22:30:42 -0800
commiteac2d01af4818e8ad2bb83d7e531221046da0b5a (patch)
treee49a16b06438d147996412574c1dcc01847c7560 /src/renderer
parentce96b5df6bcbb41ba9e91f52b1d88f6e28de48df (diff)
downloadalacritty-eac2d01af4818e8ad2bb83d7e531221046da0b5a.tar.gz
alacritty-eac2d01af4818e8ad2bb83d7e531221046da0b5a.zip
Organize buffer data into struct
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/mod.rs49
1 files changed, 40 insertions, 9 deletions
diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs
index baf7c5aa..819fc1a8 100644
--- a/src/renderer/mod.rs
+++ b/src/renderer/mod.rs
@@ -23,6 +23,26 @@ pub struct QuadRenderer {
ebo: GLuint,
}
+pub struct PackedQuad {
+ pub x_tr: f32,
+ pub y_tr: f32,
+ pub u_tr: f32,
+ pub v_tr: f32,
+ pub x_br: f32,
+ pub y_br: f32,
+ pub u_br: f32,
+ pub v_br: f32,
+ pub x_bl: f32,
+ pub y_bl: f32,
+ pub u_bl: f32,
+ pub v_bl: f32,
+ pub x_tl: f32,
+ pub y_tl: f32,
+ pub u_tl: f32,
+ pub v_tl: f32,
+}
+
+
impl QuadRenderer {
// TODO should probably hand this a transform instead of width/height
pub fn new(width: u32, height: u32) -> QuadRenderer {
@@ -81,13 +101,24 @@ impl QuadRenderer {
let rect = get_rect(glyph, x, y);
- // top right of character
- let vertices: [[f32; 4]; 4] = [
- [rect.max_x(), rect.max_y(), 1., 0.], // top-right
- [rect.max_x(), rect.min_y(), 1., 1.], // bottom-right
- [rect.min_x(), rect.min_y(), 0., 1.], // bottom-left
- [rect.min_x(), rect.max_y(), 0., 0.], // top-left
- ];
+ let packed = [PackedQuad {
+ x_tr: rect.max_x(),
+ y_tr: rect.max_y(),
+ u_tr: 1.0,
+ v_tr: 0.0,
+ x_br: rect.max_x(),
+ y_br: rect.min_y(),
+ u_br: 1.0,
+ v_br: 1.0,
+ x_bl: rect.min_x(),
+ y_bl: rect.min_y(),
+ u_bl: 0.0,
+ v_bl: 1.0,
+ x_tl: rect.min_x(),
+ y_tl: rect.max_y(),
+ u_tl: 0.0,
+ v_tl: 0.0,
+ }];
unsafe {
bind_mask_texture(glyph.tex_id);
@@ -97,8 +128,8 @@ impl QuadRenderer {
gl::BufferSubData(
gl::ARRAY_BUFFER,
0,
- (4 * 4 * size_of::<f32>()) as isize,
- vertices.as_ptr() as *const _
+ (packed.len() * size_of::<PackedQuad>()) as isize,
+ packed.as_ptr() as *const _
);
gl::BindBuffer(gl::ARRAY_BUFFER, 0);
gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, self.ebo);