Browse Source

textium: start work on a gl/glium renderer

master
Erin 8 years ago
parent
commit
9528025a23
5 changed files with 67 additions and 0 deletions
  1. +1
    -0
      textium/src/lib.rs
  2. +17
    -0
      textium/src/renderer/gl_renderer_140.frag
  3. +12
    -0
      textium/src/renderer/gl_renderer_140.vert
  4. +34
    -0
      textium/src/renderer/glium_renderer.rs
  5. +3
    -0
      textium/src/renderer/mod.rs

+ 1
- 0
textium/src/lib.rs View File

@ -15,6 +15,7 @@ pub mod geometry;
pub mod rasterizer;
pub mod packer;
pub mod cache;
pub mod renderer;
use std::collections::HashMap;
use std::hash::{Hash, Hasher};


+ 17
- 0
textium/src/renderer/gl_renderer_140.frag View File

@ -0,0 +1,17 @@
#version 140
in vec2 v_tex_coord;
out vec4 frag_color;
uniform sampler2D tex;
void main() {
vec4 c = vec4(0, 0, 0, texture(tex, v_tex_coord));
if (c.a <= 0.01) {
discard;
} else {
frag_color = c;
}
}

+ 12
- 0
textium/src/renderer/gl_renderer_140.vert View File

@ -0,0 +1,12 @@
#version 140
in vec2 position;
in vec2 tex_coord;
out vec2 v_tex_coord;
void main() {
gl_Position = vec4(position, 0.0, 1.0);
v_tex_coord = tex_coord;
}

+ 34
- 0
textium/src/renderer/glium_renderer.rs View File

@ -0,0 +1,34 @@
use glium::Program;
use glium::backend::Facade;
#[derive(Copy, Clone, Debug)]
struct Vertex {
position: [u32; 2],
tex_coords: [u32; 2],
}
implement_vertex!(Vertex, position, tex_coords);
static SHADER_FRAG_140: &'static str = include_str!("gl_renderer_140.frag");
static SHADER_VERT_140: &'static str = include_str!("gl_renderer_140.vert");
pub struct TextRenderer {
gl_program: Program,
}
impl TextRenderer {
pub fn new<F>(display: &F) -> TextRenderer where F: Facade {
let program = program!(display,
140 => {
vertex: SHADER_VERT_140,
fragment: SHADER_FRAG_140,
},
).expect("textium: could not compile glium renderer shaders");
TextRenderer {
gl_program: program,
}
}
// pub fn draw(text: RenderableText)
}

+ 3
- 0
textium/src/renderer/mod.rs View File

@ -0,0 +1,3 @@
mod glium_renderer;
pub use self::glium_renderer::TextRenderer as GliumRenderer;

Loading…
Cancel
Save