From 688d404c6accc7f2596f36e8aa002c350fc635b5 Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Thu, 7 Apr 2022 12:15:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B8=20=D0=B1=D0=B5=D0=B7=20=D0=B8=D0=BD?= =?UTF-8?q?=D0=B4=D0=B5=D0=BA=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Model.h | 20 ++++++++++++++++++++ src/Model.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 include/Model.h create mode 100644 src/Model.cpp diff --git a/include/Model.h b/include/Model.h new file mode 100644 index 0000000..e39f6a6 --- /dev/null +++ b/include/Model.h @@ -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 diff --git a/src/Model.cpp b/src/Model.cpp new file mode 100644 index 0000000..fa632e0 --- /dev/null +++ b/src/Model.cpp @@ -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); +}