more memory stuff
This commit is contained in:
34
cve_model.cpp
Normal file
34
cve_model.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "cve_model.hpp"
|
||||
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
|
||||
namespace cve {
|
||||
|
||||
CveModel::CveModel(CveDevice &device, const std::vector<Vertex> &verticies) : cveDevice{device} {
|
||||
createVertexBuffers(verticies);
|
||||
}
|
||||
|
||||
CveModel::~CveModel() {
|
||||
vkDestroyBuffer(cveDevice.device(), vertexBuffer, nullptr);
|
||||
vkFreeMemory(cveDevice.device(), vertexBufferMemory, nullptr);
|
||||
}
|
||||
|
||||
void CveModel::createVertexBuffers(const std::vector<Vertex> &verticies) {
|
||||
vertexCount = static_cast<uint32_t>(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<size_t>(bufferSize));
|
||||
vkUnmapMemory(cveDevice.device(), vertexBufferMemory);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user