CmGpuParamBlockBuffer.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "CmGpuParamBlockBuffer.h"
  2. #include "CmGpuParamBlock.h"
  3. namespace BansheeEngine
  4. {
  5. GpuParamBlockBuffer::GpuParamBlockBuffer()
  6. :mSize(0), mUsage(GPBU_DYNAMIC), mParamBlock(nullptr)
  7. {
  8. }
  9. GpuParamBlockBuffer::~GpuParamBlockBuffer()
  10. {
  11. if(mParamBlock != nullptr)
  12. cm_delete(mParamBlock);
  13. }
  14. void GpuParamBlockBuffer::initialize(UINT32 size, GpuParamBlockUsage usage)
  15. {
  16. mSize = size;
  17. mUsage = usage;
  18. mParamBlock = cm_new<GpuParamBlock, PoolAlloc>(size);
  19. CoreObject::initialize();
  20. }
  21. void GenericGpuParamBlockBuffer::writeData(const UINT8* data)
  22. {
  23. memcpy(mData, data, mSize);
  24. }
  25. void GenericGpuParamBlockBuffer::readData(UINT8* data) const
  26. {
  27. memcpy(data, mData, mSize);
  28. }
  29. void GenericGpuParamBlockBuffer::initialize_internal()
  30. {
  31. mData = (UINT8*)cm_alloc<ScratchAlloc>(mSize);
  32. memset(mData, 0, mSize);
  33. GpuParamBlockBuffer::initialize_internal();
  34. }
  35. void GenericGpuParamBlockBuffer::destroy_internal()
  36. {
  37. if(mData != nullptr)
  38. cm_free<ScratchAlloc>(mData);
  39. GpuParamBlockBuffer::destroy_internal();
  40. }
  41. }