From 3d211b5da39ebcadf2c21e4b7dc824dc524b8af5 Mon Sep 17 00:00:00 2001 From: JimmyBinoculars Date: Fri, 20 Feb 2026 18:42:03 +0000 Subject: [PATCH] more memory stuff --- VulkanTest | Bin 102080 -> 102624 bytes cve_model.cpp | 34 +++++++++++++++++++++++++ cve_model.hpp | 44 ++++++++++++++++++++++----------- shaders/simple_shader.vert.spv | Bin 1164 -> 896 bytes 4 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 cve_model.cpp diff --git a/VulkanTest b/VulkanTest index 76a56707a7d9aa6fabeed1c360a9b5eff90632e8..719722f9db4397c710fe1a8ff3933c322b0d382c 100755 GIT binary patch delta 19146 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 F{tt(wCY%5O delta 18188 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 G(EkTo`u{or diff --git a/cve_model.cpp b/cve_model.cpp new file mode 100644 index 0000000..5807794 --- /dev/null +++ b/cve_model.cpp @@ -0,0 +1,34 @@ +#include "cve_model.hpp" + +#include +#include + +namespace cve { + + CveModel::CveModel(CveDevice &device, const std::vector &verticies) : cveDevice{device} { + createVertexBuffers(verticies); + } + + CveModel::~CveModel() { + vkDestroyBuffer(cveDevice.device(), vertexBuffer, nullptr); + vkFreeMemory(cveDevice.device(), vertexBufferMemory, nullptr); + } + + void CveModel::createVertexBuffers(const std::vector &verticies) { + vertexCount = static_cast(verticies.size()); + assert(vertexCount >= 3 && "Vertex count must be at least 3"); + VkDeviceSize bufferSize = sizeof(verticies[0]) * vertexCount; + cveDevice.createBuffer( + bufferSize, + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + vertexBuffer, + vertexBufferMemory + ); + + void *data; + vkMapMemory(cveDevice.device(), vertexBufferMemory, 0, bufferSize, 0, &data); + memcpy(data, verticies.data(), static_cast(bufferSize)); + vkUnmapMemory(cveDevice.device(), vertexBufferMemory); + } +} diff --git a/cve_model.hpp b/cve_model.hpp index 2c99e08..59b1adf 100644 --- a/cve_model.hpp +++ b/cve_model.hpp @@ -1,22 +1,38 @@ #pragma once +#include + #include "cve_device.hpp" +#define GLM_FORCE_RADIANS +#define GLM_FORCE_DEPTH_ZERO_TO_ONE +#include + namespace cve { - class CveModel { - public: - CveModel(); - ~CveModel(); + class CveModel { + public: - CveModel(const CveModel &) = delete; - CveModel &operator=(const CveModel &) = delete; + struct Vertex { + glm::vec2 position; + static std::vector getBindingDescriptions(); + static std::vector getAttributeDescriptions(); + }; - void bind(VkCommandBuffer commandBuffer); - void draw(VkCommandBuffer commandBuffer); - private: - CveDevice &cveDevice; - VkBuffer vertexBuffer; - VkDeviceMemory vertexBufferMemory; - uint32_t vertexCount; - }; + CveModel(CveDevice &device, const std::vector &verticies); + ~CveModel(); + + CveModel(const CveModel &) = delete; + CveModel &operator=(const CveModel &) = delete; + + void bind(VkCommandBuffer commandBuffer); + void draw(VkCommandBuffer commandBuffer); + + private: + void createVertexBuffers(const std::vector &verticies); + + CveDevice &cveDevice; + VkBuffer vertexBuffer; + VkDeviceMemory vertexBufferMemory; + uint32_t vertexCount; + }; } \ No newline at end of file diff --git a/shaders/simple_shader.vert.spv b/shaders/simple_shader.vert.spv index 6eb3b0a04172c1724ac2791f5da00bce9b18dd36..4a3fc9b410a132ba8768744f8b3b5e4dec8f92de 100644 GIT binary patch literal 896 zcmYk3T}uK{5Qb0cnq^vMW?zWWWe{Cd1W^$c+l5debi0TyabVjPU8B0{xAm*K33{Jh z*BlvV=AC!G&gOG_^Ty1XvZ^ZxIV-(YPJYy}x%mw_ZPryixoS_+DT`-y7JW-;eE^53e-Cvtd6N z4`vCD7_+k+?O4`~=fHdLhfn@6_TLo>O>um3uOl1V*HGwu!e{pcw_)71pPEcfnqz0> zt^*t0*iqaI`~Eb?<>baeFwHr-lbaDoKW>k*f%0AD*^$0?%Ht!M&9L;%`5ON`YTz+9 zx`Fy>SfUfP#A#LH5Iy;fwI!_M@p$+81D{fN00jC#0hQY4ET zN%VC|{ib|ov+If8oxa?Rfd2?_WY2{%qb{ZYqfmOUPcWG&)|_DM@Sx80-jKp2$3E=x&}X+eZyx>ppUaFHJUvteH4XXOw-V(u;M=OR7I2A{G)m32}^_`Ix6@*hlNO`Y=|Tcl(tn*b>g?Ur>dU#GgnxS)KLqP^v1XSFb^4olZEOs- z(EF0c<~E2IurcsF8pjv#t=}eI#9AX46Whyr`IqC^w~@16y9_){yi$k19&>-cwF=b8 zH=0ZMoP$QQMj$5|?lQhLHP;@^uukmv)SLH?SFq0Ej+#4d;JaJzw23t@w}a=KG&Sag zcfE>r59YnAvF|PC?yh5F;CJm~d;@r_-^QAgx8B(Ik~4n`>m2T+*~4x85Plw*zlUcp zXM4`>d^7Llk^ch|VP6yZ2JYe&3j6H