BsGpuParamBlockBuffer.cpp 1.3 KB

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