42 lines
893 B
C++
42 lines
893 B
C++
#ifndef NBUFFER_H
|
|
#define NBUFFER_H
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <destrum/Graphics/Resources/Buffer.h>
|
|
|
|
class GfxDevice;
|
|
class MemoryManager;
|
|
|
|
class NBuffer {
|
|
public:
|
|
void init(
|
|
GfxDevice& gfxDevice,
|
|
VkBufferUsageFlags usage,
|
|
std::size_t dataSize,
|
|
const std::string& debugName = "");
|
|
|
|
void cleanup(GfxDevice& gfxDevice);
|
|
|
|
void uploadNewData(
|
|
VkCommandBuffer cmd,
|
|
std::size_t frameIndex,
|
|
void* newData,
|
|
std::size_t dataSize,
|
|
std::size_t offset = 0,
|
|
bool sync = true) const;
|
|
|
|
const GPUBuffer& getBuffer() const { return gpuBuffer; }
|
|
|
|
private:
|
|
std::size_t framesInFlight{0};
|
|
std::size_t gpuBufferSize{0};
|
|
std::vector<GPUBuffer> stagingBuffers;
|
|
GPUBuffer gpuBuffer;
|
|
const MemoryManager* memoryManager{nullptr};
|
|
bool initialized{false};
|
|
};
|
|
|
|
#endif //NBUFFER_H
|