#pragma once
#include "Macros.h"
#include "Types.h"
#include "base/CCRef.h"
namespace cocos2d {
class MeshVertexData;
class MeshIndexData;
}
CC_BACKEND_BEGIN
class Buffer : public cocos2d::Ref
{
public:
virtual void updateData(void* data, unsigned int size) = 0;
virtual void updateSubData(void* data, unsigned int offset, unsigned int size) = 0;
/*
* By default, static buffer data will automatically stored when it comes to foreground.
* This function is used to indicate whether external data needs to be used to update the buffer instead of using the default stored data.
*/
virtual void usingDefaultStoredData(bool needDefaultStoredData) = 0;
unsigned int getSize() const { return _size; }
protected:
Buffer(unsigned int size, BufferType type, BufferUsage usage)
: _usage(usage)
, _type(type)
, _size(size)
{}
virtual ~Buffer() = default;
BufferUsage _usage = BufferUsage::DYNAMIC;
BufferType _type = BufferType::VERTEX;
unsigned int _size = 0;
};
CC_BACKEND_END