-use cube::Cube;
+use crate::cube::Cube;
use glium;
-use glium::{Display, Program, Surface};
+use glium::{Display, Program, Surface, implement_vertex};
use glium::index::{IndexBuffer, PrimitiveType};
+use std::rc::Rc;
pub fn solid_fill_program(display: &Display) -> Program {
- let vertex_shader_src = include_str!("solid.vert");
- let fragment_shader_src = include_str!("solid.frag");
- return Program::from_source(display, vertex_shader_src, fragment_shader_src, None).unwrap();
+ let vertex_shader_src = include_str!("shaders/solid.vert");
+ let fragment_shader_src = include_str!("shaders/solid.frag");
+ Program::from_source(display, vertex_shader_src, fragment_shader_src, None).unwrap()
}
#[derive(Copy, Clone)]
struct Vertex { position: [f32; 3] }
implement_vertex!(Vertex, position);
-pub struct BoundingBox<'a> {
+pub struct BoundingBox {
vertexes: glium::VertexBuffer<Vertex>,
- program: &'a Program,
+ program: Rc<Program>,
indices: IndexBuffer<u16>,
}
-impl<'a> BoundingBox<'a> {
- pub fn new(display: &Display, c: &Cube, program: &'a Program) -> BoundingBox<'a> {
+impl BoundingBox {
+ pub fn new(display: &Display, c: &Cube, program: Rc<Program>) -> BoundingBox {
let vertex_data = [
Vertex { position: [c.xmin, c.ymin, c.zmin] },
Vertex { position: [c.xmax, c.ymin, c.zmin] },