44 void upload(SDL_GPUCommandBuffer* cmd,
const void* data, uint32_t count, uint32_t stride);
54 [[nodiscard]] uint32_t
liveCount()
const {
return liveCount_; }
58 SDL_GPUDevice* device_ =
nullptr;
59 SDL_GPUBuffer* gpuBuf_ =
nullptr;
60 SDL_GPUTransferBuffer* transfer_ =
nullptr;
61 uint32_t capacity_ = 0;
62 uint32_t liveCount_ = 0;
Manages a GPU storage buffer + CPU-side transfer buffer pair for particle data.
Definition GpuParticleBuffer.hpp:26
void bindAsVertex(SDL_GPURenderPass *pass) const
Bind as a vertex buffer at binding index 0.
Definition GpuParticleBuffer.cpp:89
uint32_t liveCount() const
Definition GpuParticleBuffer.hpp:54
void bindAsVertexStorage(SDL_GPURenderPass *pass, uint32_t slot) const
Bind as a vertex storage buffer at the given slot.
Definition GpuParticleBuffer.cpp:83
void upload(SDL_GPUCommandBuffer *cmd, const void *data, uint32_t count, uint32_t stride)
Upload count * stride bytes from data to the GPU buffer.
Definition GpuParticleBuffer.cpp:46
void quit()
Release all GPU resources.
Definition GpuParticleBuffer.cpp:31
Mode
Definition GpuParticleBuffer.hpp:29
void init(SDL_GPUDevice *dev, uint32_t maxBytes, Mode mode=Mode::Storage)
Allocate GPU + transfer buffers of maxBytes each.
Definition GpuParticleBuffer.cpp:8
uint32_t capacityBytes() const
Definition GpuParticleBuffer.hpp:55