Temporarily use push constants to set view/projection matrices

This commit is contained in:
2020-06-26 03:40:03 +02:00
parent e755d3b1d8
commit 4121b5e657
3 changed files with 9 additions and 2 deletions

View File

@@ -14,6 +14,8 @@ layout(location = 0) out vec2 tex_coords;
layout(push_constant) uniform PushConstants { layout(push_constant) uniform PushConstants {
mat4 model; mat4 model;
mat4 view;
mat4 projection;
} push; } push;
out gl_PerVertex { out gl_PerVertex {
@@ -21,6 +23,6 @@ out gl_PerVertex {
}; };
void main() { void main() {
gl_Position = ubo.projection * ubo.view * push.model * vec4(position, 1.0); gl_Position = push.projection * push.view * push.model * vec4(position, 1.0);
tex_coords = uv; tex_coords = uv;
} }

View File

@@ -68,6 +68,8 @@ impl Game for TestGame {
renderer.game_data.line_push_constants.view = view.into(); renderer.game_data.line_push_constants.view = view.into();
renderer.game_data.line_push_constants.projection = proj.into(); renderer.game_data.line_push_constants.projection = proj.into();
renderer.game_data.push_constants.view = view.into();
renderer.game_data.push_constants.projection = proj.into();
self.input.frame_end(); self.input.frame_end();

View File

@@ -111,6 +111,8 @@ impl VulkanRenderer {
let mut data = GameData { let mut data = GameData {
push_constants: PushConstants { push_constants: PushConstants {
model: Matrix4::identity().into(), model: Matrix4::identity().into(),
view: Matrix4::identity().into(),
projection: Matrix4::identity().into(),
}, },
line_push_constants: LinePushConstants { line_push_constants: LinePushConstants {
model: Matrix4::identity().into(), model: Matrix4::identity().into(),
@@ -469,6 +471,7 @@ pub fn start_event_loop(mut renderer: VulkanRenderer, mut game: Box<dyn Game>, e
let ubo = game.update(&mut renderer); let ubo = game.update(&mut renderer);
event_loop.run(move |event, _, control_flow| { event_loop.run(move |event, _, control_flow| {
game.on_window_event(&event);
match event { match event {
Event::WindowEvent { event: WindowEvent::CloseRequested, .. } => { Event::WindowEvent { event: WindowEvent::CloseRequested, .. } => {
*control_flow = ControlFlow::Exit; *control_flow = ControlFlow::Exit;