2018-02-23 15:22:48 +01:00
|
|
|
extern crate glium;
|
2018-02-26 11:45:53 +01:00
|
|
|
extern crate model_converter;
|
2018-02-23 15:22:48 +01:00
|
|
|
|
|
|
|
use glium::Display;
|
|
|
|
use glium::glutin;
|
|
|
|
use glium::glutin::{
|
|
|
|
EventsLoop,
|
|
|
|
WindowBuilder,
|
|
|
|
};
|
|
|
|
|
|
|
|
use glium::glutin::Event;
|
|
|
|
use glium::glutin::WindowEvent;
|
|
|
|
use glium::glutin::VirtualKeyCode;
|
|
|
|
|
2018-02-26 14:59:32 +01:00
|
|
|
use model_converter::math::vector::Vector3;
|
|
|
|
use model_converter::parser::{parse, parse_into_model};
|
|
|
|
use model_converter::renderer::{Camera, Renderer};
|
2018-02-26 11:45:53 +01:00
|
|
|
|
2018-02-23 15:22:48 +01:00
|
|
|
fn main() {
|
|
|
|
|
2018-02-26 14:59:32 +01:00
|
|
|
let mut model = parse("./assets/models/toonlink/link.mtl").unwrap();
|
|
|
|
parse_into_model("./assets/models/toonlink/link.obj", &mut model).unwrap();
|
|
|
|
|
2018-02-23 15:22:48 +01:00
|
|
|
let mut events_loop = EventsLoop::new();
|
|
|
|
let window = WindowBuilder::new();
|
2018-02-26 14:59:32 +01:00
|
|
|
let context = glutin::ContextBuilder::new().with_depth_buffer(24);
|
2018-02-23 15:22:48 +01:00
|
|
|
let display = Display::new(window, context, &events_loop).unwrap();
|
|
|
|
|
|
|
|
let mut closed = false;
|
|
|
|
|
2018-02-26 11:45:53 +01:00
|
|
|
let mut renderer = Renderer::new(display);
|
|
|
|
renderer.add_model(&model);
|
|
|
|
|
2018-02-26 14:59:32 +01:00
|
|
|
let camera = Camera::new(
|
|
|
|
Vector3::new(50.0, 0.0, 25.0),
|
|
|
|
Vector3::new(0.0, 0.0, 0.0),
|
|
|
|
Vector3::new(0.0, 1.0, 0.0),
|
|
|
|
);
|
|
|
|
|
2018-02-23 15:22:48 +01:00
|
|
|
while !closed {
|
|
|
|
|
2018-02-26 11:45:53 +01:00
|
|
|
let mut target = renderer.draw();
|
2018-02-26 14:59:32 +01:00
|
|
|
renderer.render(&camera, &mut target);
|
2018-02-23 15:22:48 +01:00
|
|
|
|
|
|
|
target.finish().unwrap();
|
|
|
|
|
|
|
|
events_loop.poll_events(|ev| {
|
|
|
|
match ev {
|
|
|
|
// Close window
|
|
|
|
Event::WindowEvent {
|
|
|
|
event: WindowEvent::Closed, ..
|
|
|
|
} => closed = true,
|
|
|
|
|
|
|
|
// Escape key
|
|
|
|
Event::WindowEvent {
|
|
|
|
event: WindowEvent::KeyboardInput {
|
|
|
|
input: glutin::KeyboardInput {
|
|
|
|
virtual_keycode: Some(VirtualKeyCode::Escape), ..
|
|
|
|
}, ..
|
|
|
|
}, ..
|
|
|
|
} => closed = true,
|
|
|
|
|
|
|
|
_ => (),
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|