model-converter/src/programs/viewer.rs

66 lines
1.7 KiB
Rust
Raw Normal View History

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::parser::{parse, parse_into_model};
2018-02-27 11:42:35 +01:00
use model_converter::renderer::Renderer;
use model_converter::renderer::camera::RotatingCamera;
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-27 11:42:35 +01:00
let mut camera = RotatingCamera::new(50.0);
2018-02-26 14:59:32 +01:00
2018-02-23 15:22:48 +01:00
while !closed {
2018-02-27 11:42:35 +01:00
camera.increase_theta(0.025);
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,
_ => (),
}
});
}
}