Класс модели с индексами

This commit is contained in:
2022-04-07 12:29:47 +03:00
parent cd152c961e
commit 8f41830da3
2 changed files with 59 additions and 3 deletions

View File

@@ -18,12 +18,53 @@ Model_wo_indexes::~Model_wo_indexes()
vulkan.destroyBuffer(vertexBuffer);
}
// Рендер модели без индексов
void Model_wo_indexes::render(VkCommandBuffer commandBuffer)
// привзка используемых буферов данных
void Model_wo_indexes::bindBuffers(VkCommandBuffer commandBuffer)
{
VkBuffer vertexBuffers[] = {vertexBuffer};
VkDeviceSize offsets[] = {0};
vkCmdBindVertexBuffers(commandBuffer, 0, 1, vertexBuffers, offsets);
}
// Рендер модели без индексов
void Model_wo_indexes::render(VkCommandBuffer commandBuffer)
{
bindBuffers(commandBuffer);
vkCmdDraw(commandBuffer, verteciesCount, 1, 0, 0);
}
// Конструктор класса без индексов - принимает массив вершин
Model_w_indexes::Model_w_indexes(Vertex* vertexArray, uint32_t vCount, uint32_t* indexArray, uint32_t iCount)
: Model_wo_indexes(vertexArray, vCount), indeciesCount(iCount)
{
extern Vulkan vulkan;
// Создание и инициализация буфера
indexBuffer = vulkan.createDataBuffer(indexArray, indeciesCount * sizeof(uint32_t), VK_BUFFER_USAGE_INDEX_BUFFER_BIT);
}
// Деструктор класса без индексов
Model_w_indexes::~Model_w_indexes()
{
extern Vulkan vulkan;
vulkan.destroyBuffer(indexBuffer);
}
// привзка используемых буферов данных
void Model_w_indexes::bindBuffers(VkCommandBuffer commandBuffer)
{
// Привязка родительских буферов
Model_wo_indexes::bindBuffers(commandBuffer);
// Привязка индексного буфера
vkCmdBindIndexBuffer(commandBuffer, indexBuffer, 0, VK_INDEX_TYPE_UINT32);
}
// Рендер модели без индексов
void Model_w_indexes::render(VkCommandBuffer commandBuffer)
{
bindBuffers(commandBuffer);
vkCmdDrawIndexed(commandBuffer, indeciesCount, 1, 0, 0, 0);
}