|
@@ -3,10 +3,11 @@
|
|
|
#include "CmPrerequisites.h"
|
|
#include "CmPrerequisites.h"
|
|
|
#include "CmCommonEnums.h"
|
|
#include "CmCommonEnums.h"
|
|
|
#include "CmGpuBufferView.h"
|
|
#include "CmGpuBufferView.h"
|
|
|
|
|
+#include "CmIDestroyable.h"
|
|
|
|
|
|
|
|
namespace CamelotEngine
|
|
namespace CamelotEngine
|
|
|
{
|
|
{
|
|
|
- class CM_EXPORT GpuBuffer
|
|
|
|
|
|
|
+ class CM_EXPORT GpuBuffer : public IDestroyable
|
|
|
{
|
|
{
|
|
|
public:
|
|
public:
|
|
|
GpuBuffer(UINT32 elementCount, UINT32 elementSize, GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite = false, bool useCounter = false);
|
|
GpuBuffer(UINT32 elementCount, UINT32 elementSize, GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite = false, bool useCounter = false);
|
|
@@ -31,6 +32,14 @@ namespace CamelotEngine
|
|
|
UINT32 getElementCount() const { return mElementCount; }
|
|
UINT32 getElementCount() const { return mElementCount; }
|
|
|
UINT32 getElementSize() const { return mElementSize; }
|
|
UINT32 getElementSize() const { return mElementSize; }
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @copydoc IDestroyable::destroy()
|
|
|
|
|
+ *
|
|
|
|
|
+ * @note Destruction is not done immediately, and is instead just scheduled on the
|
|
|
|
|
+ * render thread. Unless called from render thread in which case it is executed right away.
|
|
|
|
|
+ */
|
|
|
|
|
+ void destroy();
|
|
|
|
|
+
|
|
|
protected:
|
|
protected:
|
|
|
GpuBufferType mType;
|
|
GpuBufferType mType;
|
|
|
GpuBufferUsage mUsage;
|
|
GpuBufferUsage mUsage;
|
|
@@ -43,6 +52,8 @@ namespace CamelotEngine
|
|
|
virtual void destroyView(GpuBufferView* view) = 0;
|
|
virtual void destroyView(GpuBufferView* view) = 0;
|
|
|
void clearBufferViews();
|
|
void clearBufferViews();
|
|
|
|
|
|
|
|
|
|
+ virtual void destroy_internal();
|
|
|
|
|
+
|
|
|
struct GpuBufferReference
|
|
struct GpuBufferReference
|
|
|
{
|
|
{
|
|
|
GpuBufferReference(GpuBufferView* _view)
|
|
GpuBufferReference(GpuBufferView* _view)
|