BsGpuParamBlockBuffer.cpp 1.1 KB

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