#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); } }