summaryrefslogtreecommitdiff
path: root/src/window.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-09-26 19:21:58 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-09-26 19:21:58 -0400
commit517dedc6a05c9048fa57eae7e7c907452b408069 (patch)
treee2f61e1c54147a9f3375fb0ab8a6f7f71ade94cc /src/window.cpp
parent7c1ba040d64a3b877f44971048bf79410c2666b0 (diff)
update instance buffer & handle camera on window resize
Diffstat (limited to 'src/window.cpp')
-rw-r--r--src/window.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp
index b32ea15..f567820 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -3,6 +3,9 @@
#include "window.hpp"
+#include "glm/ext/matrix_transform.hpp"
+#include "glm/gtc/matrix_transform.hpp"
+
#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
const bool ENABLE_VALIDATION_LAYERS = true;
@@ -73,7 +76,7 @@ VkSemaphore presentRenderFinishedSemaphores[MAX_FRAMES_IN_FLIGHT];
VkFence presentInFlightFences[MAX_FRAMES_IN_FLIGHT];
UniformBufferObject UBO{
.model = glm::mat4(1),
- .view = glm::mat4(1),
+ .view = glm::lookAt(glm::vec3(0), glm::vec3(2, 2, 0), glm::vec3(0, 0, 1)),
.proj = glm::mat4(1),
};
VkDeviceMemory uniformBufferMemory;
@@ -725,6 +728,11 @@ void UpdatePresentDescriptorSets() {
vkUpdateDescriptorSets(vkDevice, MAX_FRAMES_IN_FLIGHT, writeDescriptorSets, 0, nullptr);
}
+void UpdateCameraProjection() {
+ UBO.proj = glm::perspective(glm::radians(45.f), extent.width / (float)extent.height, 0.1f, 100.f);
+ UBO.proj[1][1] *= -1;
+}
+
void CreateRenderPass() {
VkAttachmentDescription colorAttachment;
colorAttachment.flags = {};
@@ -1466,6 +1474,7 @@ void RecreateSwapchain() {
DestroySwapchain();
CreateSwapchain();
UpdatePresentDescriptorSets();
+ UpdateCameraProjection();
CreateFramebuffers();
shouldRecreateSwapchain = false;
}
@@ -1488,6 +1497,7 @@ void CreateWindow(PKEWindowProperties *wp) {
CreateRenderPass();
CreateGraphicsPipeline();
UpdatePresentDescriptorSets();
+ UpdateCameraProjection();
CreateFramebuffers();
CreateCommandPool();
CreateCommandBuffer();