1#ifndef VULKAN_VERTEXBUFFER
2#define VULKAN_VERTEXBUFFER
4#include <vulkan/vulkan.h>
24 template<
typename... C,
typename... S,
template<
typename,
typename...>
class... M>
requires (std::same_as<M<PipelineOptions::Vertex<C...>, S...>,
Objects::Model<PipelineOptions::Vertex<C...>, S...>> && ...)
25 void fillBuffer(
const M<PipelineOptions::Vertex<C...>, S...>&... models) {
26 std::vector<PipelineOptions::Vertex<C...>> data{};
27 (data.insert(data.end(), models.getVertices().begin(), models.getVertices().end()), ...);
29 verticesCount = data.size();
36 memcpy(rawData, data.data(), data.size() *
sizeof(data[0]));
48 unsigned int verticesCount;
const size_t size
Definition: Buffer.h:112
const LogicalDevice & virtualGpu
Definition: Buffer.h:111
VkDeviceMemory bufferMemory
Definition: Buffer.h:110
Definition: VertexBuffer.h:16
unsigned int getVerticesCount() const
Definition: VertexBuffer.h:41
void fillBuffer(const M< PipelineOptions::Vertex< C... >, S... > &... models)
Definition: VertexBuffer.h:25
VertexBuffer(const LogicalDevice &virtualGpu, const PhysicalDevice &realGpu, size_t size)
Definition: VertexBuffer.h:19
A logical device is an abstraction of the physical GPU which we can mainly use to send commands.
Definition: LogicalDevice.h:15
Represents the GPU (or any other device) that will be used with Vulkan to perform computer graphics.
Definition: PhysicalDevice.h:17