50 lines
1.3 KiB
Rust
50 lines
1.3 KiB
Rust
// #![allow(
|
|
// dead_code,
|
|
// unused_variables,
|
|
// clippy::too_many_arguments,
|
|
// clippy::unnecessary_wraps
|
|
// )]
|
|
|
|
mod app;
|
|
use app::App;
|
|
|
|
use anyhow::Result;
|
|
use winit::dpi::LogicalSize;
|
|
use winit::event::{Event, WindowEvent};
|
|
use winit::event_loop::{ControlFlow, EventLoop};
|
|
use winit::window::WindowBuilder;
|
|
|
|
fn main() -> Result<()> {
|
|
pretty_env_logger::init();
|
|
|
|
// Window
|
|
let event_loop = EventLoop::new();
|
|
let window = WindowBuilder::new()
|
|
.with_title("Vulkan Tutorial (Rust)")
|
|
.with_inner_size(LogicalSize::new(1024, 768))
|
|
.build(&event_loop)?;
|
|
|
|
// App
|
|
let mut app = unsafe { App::create(&window)? };
|
|
let mut destroying = false;
|
|
event_loop.run(move |event, _, control_flow| {
|
|
*control_flow = ControlFlow::Poll;
|
|
match event {
|
|
// Render a frame if our Vulkan app is not being destroyed
|
|
Event::MainEventsCleared if !destroying => unsafe { app.render(&window) }.unwrap(),
|
|
// Destroy our Vulkan app.
|
|
Event::WindowEvent {
|
|
event: WindowEvent::CloseRequested,
|
|
..
|
|
} => {
|
|
destroying = true;
|
|
*control_flow = ControlFlow::Exit;
|
|
unsafe {
|
|
app.destroy();
|
|
}
|
|
}
|
|
_ => {}
|
|
}
|
|
});
|
|
}
|