BsGpuParamBlockBuffer.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "BsGpuParamBlockBuffer.h"
  2. #include "BsGpuParamBlock.h"
  3. #include "BsGpuParamBlockBufferProxy.h"
  4. namespace BansheeEngine
  5. {
  6. GpuParamBlockBuffer::GpuParamBlockBuffer()
  7. :mSize(0), mUsage(GPBU_DYNAMIC), mParamBlock(nullptr)
  8. {
  9. }
  10. GpuParamBlockBuffer::~GpuParamBlockBuffer()
  11. {
  12. if(mParamBlock != nullptr)
  13. bs_delete(mParamBlock);
  14. }
  15. void GpuParamBlockBuffer::initialize(UINT32 size, GpuParamBlockUsage usage)
  16. {
  17. mSize = size;
  18. mUsage = usage;
  19. mParamBlock = bs_new<GpuParamBlock, PoolAlloc>(size);
  20. CoreObject::initialize();
  21. }
  22. GpuParamBlockBufferProxyPtr GpuParamBlockBuffer::_createProxy() const
  23. {
  24. GpuParamBlockBufferProxyPtr proxy = bs_shared_ptr<GpuParamBlockBufferProxy>(mSize);
  25. memcpy(proxy->block->getData(), mParamBlock->getData(), mSize);
  26. return proxy;
  27. }
  28. void GenericGpuParamBlockBuffer::writeData(const UINT8* data)
  29. {
  30. memcpy(mData, data, mSize);
  31. }
  32. void GenericGpuParamBlockBuffer::readData(UINT8* data) const
  33. {
  34. memcpy(data, mData, mSize);
  35. }
  36. void GenericGpuParamBlockBuffer::initialize_internal()
  37. {
  38. mData = (UINT8*)bs_alloc<ScratchAlloc>(mSize);
  39. memset(mData, 0, mSize);
  40. GpuParamBlockBuffer::initialize_internal();
  41. }
  42. void GenericGpuParamBlockBuffer::destroy_internal()
  43. {
  44. if(mData != nullptr)
  45. bs_free<ScratchAlloc>(mData);
  46. GpuParamBlockBuffer::destroy_internal();
  47. }
  48. }