13#include "vulkan/vulkan.h"
65 virtual void Bind()
const override;
73 virtual void UnBind()
const override;
108 void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties,
109 VkBuffer& buffer, VkDeviceMemory& bufferMemory);
119 void CopyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size);
135 uint32_t FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties);
160 VkBuffer m_VertexBuffer;
161 VkDeviceMemory m_VertexBufferMemory;
200 virtual void Bind()
const override;
208 virtual void UnBind()
const override;
221 void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties,
222 VkBuffer& buffer, VkDeviceMemory& bufferMemory);
232 void CopyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size);
244 uint32_t
FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties);
253 virtual uint32_t
GetCount()
const override {
return m_Count; }
280 VkBuffer m_IndexBuffer;
281 VkDeviceMemory m_IndexBufferMemory;
323 void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties,
324 VkBuffer& buffer, VkDeviceMemory& bufferMemory);
336 uint32_t
FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties);
358 void BufferCreation();
368 void UploadUniformBuffer(
size_t frameIndex)
override;
372 std::vector<VkBuffer> m_UniformBuffers;
373 std::vector<VkDeviceMemory> m_UniformBuffersMemory;
406 void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties,
407 VkBuffer& buffer, VkDeviceMemory& bufferMemory);
419 uint32_t
FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties);
420 const inline VkBuffer& GetBuffer()
const {
return m_StagingBuffer; }
447 VkBuffer m_StagingBuffer;
448 VkDeviceMemory m_StagingBufferMemory;
This file contains base classes for various kinds of buffers used by the Engine.
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
A format for vertex buffer say.
Definition Buffer.h:183
Abstract class for image buffer.
Definition Buffer.h:331
An abstract class for index buffer.
Definition Buffer.h:315
An abstract class for vertex buffer.
Definition Buffer.h:298
VulkanImageBuffer(const char *filename)
Creates a GPU memory buffer for storing image texture.
Definition VulkanBuffer.cpp:359
int GetTextureHeight() const
Getter for the height (in pixels?) of the image texture.
Definition VulkanBuffer.h:435
int GetTextureWidth() const
Getter for the width (in pixels?) of the image texture.
Definition VulkanBuffer.h:428
void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer &buffer, VkDeviceMemory &bufferMemory)
Creates Vulkan buffer (VKbuffer) for image texture's use and allocates device memory appropriately.
Definition VulkanBuffer.cpp:384
uint32_t FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties)
Finds appropriate memory type with demanded properties. Basically a loop is run from counter i = 0 to...
Definition VulkanBuffer.cpp:411
int GetTextureChannels() const
Getter for desired channels (if non-zero, # of image components requested in result).
Definition VulkanBuffer.h:443
virtual void Bind() const override
Not useful for Vulkan API atm.
Definition VulkanBuffer.cpp:242
VkBuffer GetIndexBuffer() const
Getter for indexbuffer.
Definition VulkanBuffer.h:260
void CopyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size)
Copy buffer.
Definition VulkanBuffer.cpp:164
virtual uint32_t GetCount() const override
Getter for the number of vertices to draw.
Definition VulkanBuffer.h:253
virtual void UnBind() const override
Not useful for Vulkan API atm.
Definition VulkanBuffer.cpp:246
void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer &buffer, VkDeviceMemory &bufferMemory)
Actual creation of buffer using Vulkan API. Memory is also allocated appropriately.
Definition VulkanBuffer.cpp:198
size_t GetBufferSize()
Getter for indexbuffer size in bytes.
Definition VulkanBuffer.h:274
VulkanIndexBuffer(uint32_t *indices, uint32_t count)
Constructor.
Definition VulkanBuffer.cpp:131
VkDeviceMemory GetIndexBufferMemory() const
Getter for index buffer memory.
Definition VulkanBuffer.h:267
uint32_t FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties)
Finds appropriate memory type with demanded properties. Basically a loop is run from counter i = 0 to...
Definition VulkanBuffer.cpp:225
VkBuffer GetVertexBuffer() const
Getter for vertex buffer.
Definition VulkanBuffer.h:142
virtual void Bind() const override
Not useful for Vulkan API atm.
Definition VulkanBuffer.cpp:120
virtual void SetLayout(const BufferLayout &layout) override
Sets the layout of the vertexbuffer.
Definition VulkanBuffer.h:92
VulkanVertexBuffer(float *vertices, uint32_t size)
Constructor.
Definition VulkanBuffer.cpp:9
size_t GetBufferSize()
Getter for buffer size (in bytes)
Definition VulkanBuffer.h:154
VkDeviceMemory GetVertexBufferMemory() const
Getter for vertex buffer memory.
Definition VulkanBuffer.h:149
virtual const BufferLayout & GetLayout() const override
Getter for the layout of the vertex buffer.
Definition VulkanBuffer.h:80
virtual void UnBind() const override
Not useful for Vulkan API atm.
Definition VulkanBuffer.cpp:125