The Square is rotating, oh damn vulkan

This commit is contained in:
Ano-sys
2025-04-04 16:29:13 +02:00
parent aa91619805
commit e2e84eb42c
3 changed files with 154 additions and 4 deletions
+25 -2
View File
@@ -8,6 +8,10 @@
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
#define GLM_FORCE_RADIANS
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <iostream>
#include <stdexcept>
#include <cstdlib>
@@ -19,8 +23,8 @@
#include <limits>
#include <algorithm>
#include <fstream>
#include <glm/glm.hpp>
#include <array>
#include <chrono>
namespace vapp{
// Change here for other presentMode
@@ -60,13 +64,19 @@ namespace vapp{
{{-0.5f, -0.5f}, {0.0f, 1.0f, 0.0f}},
{{0.5f, -0.5f}, {0.0f, 0.0f, 1.0f}},
{{0.5f, 0.5f}, {0.0f, 1.0f, 0.0f}},
{{-0.5f, 0.5f}, {0.0f, 0.0f, 1.0f}}
{{-0.5f, 0.5f}, {1.0f, 0.0f, 0.0f}}
};
// uint16_t also possible -> change in vkCmdBindIndexBuffer also
const std::vector<uint32_t> indices = { 0, 1, 2, 2, 3, 0 };
// END Remove
struct UniformBufferObject{
glm::mat4 model;
glm::mat4 view;
glm::mat4 proj;
};
struct QueueFamilyIndices{
std::optional<uint32_t> graphicsFamily;
std::optional<uint32_t> presentFamily;
@@ -111,6 +121,7 @@ namespace vapp{
std::vector<VkImageView> swapChainImageViews;
VkRenderPass renderPass;
VkDescriptorSetLayout descriptorSetLayout;
VkPipelineLayout pipelineLayout;
VkPipeline graphicsPipeline;
@@ -130,6 +141,13 @@ namespace vapp{
VkDeviceMemory vertexBufferMemory;
VkBuffer indexBuffer;
VkDeviceMemory indexBufferMemory;
std::vector<VkBuffer> uniformBuffers;
std::vector<VkDeviceMemory> uniformBuffersMemory;
std::vector<void*> uniformBuffersMapped;
VkDescriptorPool descriptorPool;
std::vector<VkDescriptorSet> descriptorSets;
#pragma endregion
bool checkValidationLayerSupport();
@@ -149,6 +167,7 @@ namespace vapp{
VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities);
void createSwapChain();
void createImageViews();
void createDescriptorSetLayout();
void createGraphicsPipeline();
VkShaderModule createShaderModule(const std::vector<char>& code);
void createRenderPass();
@@ -159,9 +178,13 @@ namespace vapp{
void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size);
void createVertexBuffer();
void createIndexBuffer();
void createUniformBuffers();
void createDescriptorPool();
void createDescriptorSets();
void createCommandBuffers();
void recordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex);
void createSyncObjects();
void updateUniformBuffer(uint32_t currentFrame);
void drawFrame();
void cleanupSwapChain();
void recreateSwapChain();