31 lines
810 B
C
31 lines
810 B
C
|
|
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
||
|
|
// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
|
||
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <Renderer/VK/BufferVK.h>
|
||
|
|
|
||
|
|
class RendererVK;
|
||
|
|
|
||
|
|
/// A binary blob that can be used to pass constants to a shader
|
||
|
|
class ConstantBufferVK
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
/// Constructor
|
||
|
|
ConstantBufferVK(RendererVK *inRenderer, VkDeviceSize inBufferSize);
|
||
|
|
~ConstantBufferVK();
|
||
|
|
|
||
|
|
/// Map / unmap buffer (get pointer to data). This will discard all data in the buffer.
|
||
|
|
template <typename T> T * Map() { return reinterpret_cast<T *>(MapInternal()); }
|
||
|
|
void Unmap();
|
||
|
|
|
||
|
|
VkBuffer GetBuffer() const { return mBuffer.mBuffer; }
|
||
|
|
|
||
|
|
private:
|
||
|
|
void * MapInternal();
|
||
|
|
|
||
|
|
RendererVK * mRenderer;
|
||
|
|
BufferVK mBuffer;
|
||
|
|
};
|