extern crate glium; extern crate model_converter; use glium::Display; use glium::glutin; use glium::glutin::{ EventsLoop, WindowBuilder, }; use glium::glutin::Event; use glium::glutin::WindowEvent; use glium::glutin::VirtualKeyCode; use model_converter::parser::{parse, parse_into_model}; use model_converter::renderer::Renderer; use model_converter::renderer::camera::RotatingCamera; fn main() { let mut model = parse("./assets/models/toonlink/link.mtl").unwrap(); parse_into_model("./assets/models/toonlink/link.obj", &mut model).unwrap(); let mut events_loop = EventsLoop::new(); let window = WindowBuilder::new(); let context = glutin::ContextBuilder::new().with_depth_buffer(24); let display = Display::new(window, context, &events_loop).unwrap(); let mut closed = false; let mut renderer = Renderer::new(display); renderer.add_model(&model); let mut camera = RotatingCamera::new(50.0); while !closed { camera.increase_theta(0.025); let mut target = renderer.draw(); renderer.render(&camera, &mut target); 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, _ => (), } }); } }