BsGpuParamBlockBuffer.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #include "BsGpuParamBlockBuffer.h"
  5. #include "BsGpuParamBlock.h"
  6. namespace BansheeEngine
  7. {
  8. GpuParamBlockBuffer::GpuParamBlockBuffer()
  9. :mSize(0), mUsage(GPBU_DYNAMIC), mParamBlock(nullptr), mCoreParamBlock(nullptr)
  10. {
  11. }
  12. GpuParamBlockBuffer::~GpuParamBlockBuffer()
  13. {
  14. }
  15. void GpuParamBlockBuffer::initialize(UINT32 size, GpuParamBlockUsage usage)
  16. {
  17. mSize = size;
  18. mUsage = usage;
  19. mParamBlock = bs_shared_ptr<GpuParamBlock>(size);
  20. CoreObject::initialize();
  21. }
  22. GenericGpuParamBlockBuffer::GenericGpuParamBlockBuffer()
  23. :mData(nullptr)
  24. { }
  25. void GenericGpuParamBlockBuffer::writeData(const UINT8* data)
  26. {
  27. memcpy(mData, data, mSize);
  28. }
  29. void GenericGpuParamBlockBuffer::readData(UINT8* data) const
  30. {
  31. memcpy(data, mData, mSize);
  32. }
  33. void GenericGpuParamBlockBuffer::initialize_internal()
  34. {
  35. if (mSize > 0)
  36. mData = (UINT8*)bs_alloc<ScratchAlloc>(mSize);
  37. else
  38. mData = nullptr;
  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. }