Класс модели без индексов

This commit is contained in:
parent 7fd9bbd4d9
commit 688d404c6a
2 changed files with 49 additions and 0 deletions

20
include/Model.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef MODEL_H
#define MODEL_H
#include "I_Model.h"
#include "Vertex.h"
// Класс модели без индексов
class Model_wo_indexes : public I_Model
{
public:
Model_wo_indexes(Vertex* vertexArray, uint32_t verteciesCount);
~Model_wo_indexes();
virtual void render(VkCommandBuffer commandBuffer);
private:
uint32_t verteciesCount; // Количество вершин
VkBuffer vertexBuffer; // Буфер вершин
};
#endif // MODEL_H

29
src/Model.cpp Normal file
View File

@ -0,0 +1,29 @@
#include "Model.h"
#include "vk.h"
// Конструктор класса без индексов - принимает массив вершин
Model_wo_indexes::Model_wo_indexes(Vertex* vertexArray, uint32_t count) : verteciesCount(count)
{
extern Vulkan vulkan;
// Создание и инициализация буфера
vertexBuffer = vulkan.createDataBuffer(vertexArray, verteciesCount * sizeof(Vertex), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT);
}
// Деструктор класса без индексов
Model_wo_indexes::~Model_wo_indexes()
{
extern Vulkan vulkan;
vulkan.destroyBuffer(vertexBuffer);
}
// Рендер модели без индексов
void Model_wo_indexes::render(VkCommandBuffer commandBuffer)
{
VkBuffer vertexBuffers[] = {vertexBuffer};
VkDeviceSize offsets[] = {0};
vkCmdBindVertexBuffers(commandBuffer, 0, 1, vertexBuffers, offsets);
vkCmdDraw(commandBuffer, verteciesCount, 1, 0, 0);
}