update UBOs
This commit is contained in:
29
src/main.rs
29
src/main.rs
@@ -2,7 +2,8 @@ use winit::{Event};
|
||||
use cgmath::{Matrix4, Rad, Vector3, Deg, Quaternion, Rotation3, One, Rotation};
|
||||
|
||||
mod vulkan;
|
||||
use crate::vulkan::{Game, LinePoint, GameObject, VulkanRenderer, RenderLoopResult, MeshHandle, GameObjectHandle};
|
||||
use crate::vulkan::{Game, LinePoint, GameObject, VulkanRenderer, RenderResult, MeshHandle, GameObjectHandle};
|
||||
use crate::vulkan::vs::ty::UniformBufferObject;
|
||||
|
||||
mod input;
|
||||
use crate::input::{InputState};
|
||||
@@ -41,12 +42,9 @@ impl TestGame {
|
||||
println!("Game loaded!");
|
||||
}
|
||||
|
||||
fn update(self: &mut Self, renderer: &mut VulkanRenderer) {
|
||||
fn update(self: &mut Self, renderer: &mut VulkanRenderer) -> UniformBufferObject {
|
||||
self.input.frame_start();
|
||||
|
||||
let new_time = (renderer.game_data.start_time.elapsed().unwrap().as_micros() as f64 / 1000000.0) as f32;
|
||||
// let frame_time = new_time - renderer.game_data.uniform_buffers.iter().map(|ubo| ubo.time).max_by(|a,b| if a > b {Ordering::Greater} else {Ordering::Less} ).unwrap();
|
||||
// renderer.uniform_buffers.iter_mut().for_each(|ubo| ubo.time = new_time);
|
||||
let time = (renderer.game_data.start_time.elapsed().unwrap().as_micros() as f64 / 1000000.0) as f32;
|
||||
|
||||
// User interaction
|
||||
if self.input.button_just_released("quit") {
|
||||
@@ -85,14 +83,16 @@ impl TestGame {
|
||||
|
||||
proj.y.y *= -1.0;
|
||||
|
||||
renderer.game_data.push_constants.view = view.into();
|
||||
renderer.game_data.push_constants.projection = proj.into();
|
||||
// renderer.uniform_buffers.iter_mut().for_each(|ubo| ubo.view = view.into());
|
||||
// renderer.uniform_buffers.iter_mut().for_each(|ubo| ubo.projection = proj.into());
|
||||
renderer.game_data.line_push_constants.view = view.into();
|
||||
renderer.game_data.line_push_constants.projection = proj.into();
|
||||
|
||||
self.input.frame_end();
|
||||
|
||||
UniformBufferObject {
|
||||
view: view.into(),
|
||||
projection: proj.into(),
|
||||
time,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,12 +123,13 @@ fn main() {
|
||||
game.game_start(&mut renderer);
|
||||
|
||||
let mut continue_rendering = true;
|
||||
let mut ubo = game.update(&mut renderer);
|
||||
|
||||
while continue_rendering {
|
||||
match renderer.render_loop(&mut game) {
|
||||
RenderLoopResult::Ok => game.update(&mut renderer),
|
||||
RenderLoopResult::Reload => println!("Render loop reloaded..."),
|
||||
RenderLoopResult::Quit => continue_rendering = false,
|
||||
match renderer.render_loop(&mut game, ubo) {
|
||||
RenderResult::Ok => ubo = game.update(&mut renderer),
|
||||
RenderResult::Reload => println!("Render loop reloaded..."),
|
||||
RenderResult::Quit => continue_rendering = false,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user