mirror of https://github.com/Leinnan/doppler.git
keyboard input
This commit is contained in:
parent
6d53186f0c
commit
30e118e81e
84
src/main.rs
84
src/main.rs
|
|
@ -79,25 +79,25 @@ pub fn main() {
|
||||||
gl::load_with(|symbol| gl_window.get_proc_address(symbol) as *const _);
|
gl::load_with(|symbol| gl_window.get_proc_address(symbol) as *const _);
|
||||||
|
|
||||||
|
|
||||||
let (ourShader, ourModel) = unsafe {
|
let (our_shader, our_model) = unsafe {
|
||||||
// configure global opengl state
|
// configure global opengl state
|
||||||
// -----------------------------
|
// -----------------------------
|
||||||
gl::Enable(gl::DEPTH_TEST);
|
gl::Enable(gl::DEPTH_TEST);
|
||||||
|
|
||||||
// build and compile shaders
|
// build and compile shaders
|
||||||
// -------------------------
|
// -------------------------
|
||||||
let ourShader = shader::Shader::from_file(
|
let our_shader = shader::Shader::from_file(
|
||||||
"resources/shaders/model_loading.vs",
|
"resources/shaders/model_loading.vs",
|
||||||
"resources/shaders/model_loading.fs");
|
"resources/shaders/model_loading.fs");
|
||||||
|
|
||||||
// load models
|
// load models
|
||||||
// -----------
|
// -----------
|
||||||
let ourModel = model::Model::new("resources/objects/nanosuit/nanosuit.obj");
|
let our_model = model::Model::new("resources/objects/planet/planet.obj");
|
||||||
|
|
||||||
// draw in wireframe
|
// draw in wireframe
|
||||||
// gl::PolygonMode(gl::FRONT_AND_BACK, gl::LINE);
|
// gl::PolygonMode(gl::FRONT_AND_BACK, gl::LINE);
|
||||||
|
|
||||||
(ourShader, ourModel)
|
(our_shader, our_model)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -105,6 +105,7 @@ pub fn main() {
|
||||||
// render loop
|
// render loop
|
||||||
// -----------
|
// -----------
|
||||||
let (r, g, b) = (0.188, 0.22, 0.235);
|
let (r, g, b) = (0.188, 0.22, 0.235);
|
||||||
|
let delta_time = 0.3;
|
||||||
events_loop.run(move |event, _, control_flow| {
|
events_loop.run(move |event, _, control_flow| {
|
||||||
println!("{:?}", event);
|
println!("{:?}", event);
|
||||||
*control_flow = ControlFlow::Wait;
|
*control_flow = ControlFlow::Wait;
|
||||||
|
|
@ -118,48 +119,59 @@ pub fn main() {
|
||||||
WindowEvent::CloseRequested => {
|
WindowEvent::CloseRequested => {
|
||||||
*control_flow = ControlFlow::Exit
|
*control_flow = ControlFlow::Exit
|
||||||
}
|
}
|
||||||
|
WindowEvent::KeyboardInput { input, .. } => {
|
||||||
|
|
||||||
|
let key = if input.virtual_keycode.is_none() {
|
||||||
|
glutin::event::VirtualKeyCode::Escape
|
||||||
|
} else {
|
||||||
|
input.virtual_keycode.unwrap()
|
||||||
|
};
|
||||||
|
match key {
|
||||||
|
glutin::event::VirtualKeyCode::W => {
|
||||||
|
camera.process_keyboard(Camera_Movement::FORWARD, delta_time);
|
||||||
|
}
|
||||||
|
glutin::event::VirtualKeyCode::S => {
|
||||||
|
camera.process_keyboard(Camera_Movement::BACKWARD, delta_time);
|
||||||
|
}
|
||||||
|
glutin::event::VirtualKeyCode::A => {
|
||||||
|
camera.process_keyboard(Camera_Movement::LEFT, delta_time);
|
||||||
|
}
|
||||||
|
glutin::event::VirtualKeyCode::D => {
|
||||||
|
camera.process_keyboard(Camera_Movement::RIGHT, delta_time);
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
println!("{:?}", input);
|
||||||
|
println!("{:?}", input);
|
||||||
|
println!("{:?}", input);
|
||||||
|
println!("{:?}", input);
|
||||||
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
},
|
},
|
||||||
Event::RedrawRequested(_) => {
|
Event::RedrawRequested(_) => {
|
||||||
unsafe{gl::ClearColor(r, g, b, 1.0);
|
unsafe{gl::ClearColor(r, g, b, 1.0);
|
||||||
gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT);}
|
gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT);
|
||||||
|
// don't forget to enable shader before setting uniforms
|
||||||
|
our_shader.useProgram();
|
||||||
|
|
||||||
|
// view/projection transformations
|
||||||
|
let projection: Matrix4<f32> = perspective(Deg(camera.Zoom), consts::SCR_WIDTH as f32 / consts::SCR_HEIGHT as f32, 0.1, 100.0);
|
||||||
|
let view = camera.get_view_matrix();
|
||||||
|
our_shader.setMat4(c_str!("projection"), &projection);
|
||||||
|
our_shader.setMat4(c_str!("view"), &view);
|
||||||
|
|
||||||
|
// render the loaded model
|
||||||
|
let mut model = Matrix4::<f32>::from_translation(vec3(0.0, -1.75, 0.0)); // translate it down so it's at the center of the scene
|
||||||
|
model = model * Matrix4::from_scale(0.2); // it's a bit too big for our scene, so scale it down
|
||||||
|
our_shader.setMat4(c_str!("model"), &model);
|
||||||
|
our_model.Draw(&our_shader);
|
||||||
|
}
|
||||||
gl_window.swap_buffers().unwrap();
|
gl_window.swap_buffers().unwrap();
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// events_loop.run_forever(|event| {
|
|
||||||
|
|
||||||
// if let Event::WindowEvent { event, .. } = event {
|
|
||||||
// if let WindowEvent::CloseRequested = event {
|
|
||||||
// return ControlFlow::Exit;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// unsafe {
|
|
||||||
// gl::ClearColor(0.1, 0.1, 0.1, 1.0);
|
|
||||||
// gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT);
|
|
||||||
|
|
||||||
// // don't forget to enable shader before setting uniforms
|
|
||||||
// ourShader.useProgram();
|
|
||||||
|
|
||||||
// // view/projection transformations
|
|
||||||
// let projection: Matrix4<f32> = perspective(Deg(camera.Zoom), consts::SCR_WIDTH as f32 / consts::SCR_HEIGHT as f32, 0.1, 100.0);
|
|
||||||
// let view = camera.get_view_matrix();
|
|
||||||
// ourShader.setMat4(c_str!("projection"), &projection);
|
|
||||||
// ourShader.setMat4(c_str!("view"), &view);
|
|
||||||
|
|
||||||
// // render the loaded model
|
|
||||||
// let mut model = Matrix4::<f32>::from_translation(vec3(0.0, -1.75, 0.0)); // translate it down so it's at the center of the scene
|
|
||||||
// model = model * Matrix4::from_scale(0.2); // it's a bit too big for our scene, so scale it down
|
|
||||||
// ourShader.setMat4(c_str!("model"), &model);
|
|
||||||
// ourModel.Draw(&ourShader);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// gl_window.swap_buffers().unwrap();
|
|
||||||
|
|
||||||
// ControlFlow::Continue
|
|
||||||
// });
|
|
||||||
// while !window.should_close() {
|
// while !window.should_close() {
|
||||||
// // per-frame time logic
|
// // per-frame time logic
|
||||||
// // --------------------
|
// // --------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue