BsD3D9GpuBuffer.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsD3D9Prerequisites.h"
  5. #include "BsGpuBuffer.h"
  6. namespace BansheeEngine
  7. {
  8. /**
  9. * @brief Represents a generic GPU buffer in DX9. This class
  10. * is just a dummy in order to conform to the interface
  11. * as DX9 supports no such buffers.
  12. */
  13. class BS_D3D9_EXPORT D3D9GpuBufferCore : public GpuBufferCore
  14. {
  15. public:
  16. ~D3D9GpuBufferCore();
  17. /**
  18. * @copydoc GpuBufferCore::lock
  19. */
  20. virtual void* lock(UINT32 offset, UINT32 length, GpuLockOptions options);
  21. /**
  22. * @copydoc GpuBufferCore::unlock
  23. */
  24. virtual void unlock();
  25. /**
  26. * @copydoc GpuBufferCore::readData
  27. */
  28. virtual void readData(UINT32 offset, UINT32 length, void* pDest);
  29. /**
  30. * @copydoc GpuBufferCore::writeData
  31. */
  32. virtual void writeData(UINT32 offset, UINT32 length, const void* pSource,
  33. BufferWriteType writeFlags = BufferWriteType::Normal);
  34. /**
  35. * @copydoc GpuBufferCore::copyData
  36. */
  37. void copyData(GpuBufferCore& srcBuffer, UINT32 srcOffset,
  38. UINT32 dstOffset, UINT32 length, bool discardWholeBuffer = false);
  39. protected:
  40. friend class D3D9HardwareBufferCoreManager;
  41. D3D9GpuBufferCore(UINT32 elementCount, UINT32 elementSize, GpuBufferType type, GpuBufferUsage usage,
  42. bool randomGpuWrite = false, bool useCounter = false);
  43. /**
  44. * @copydoc GpuBufferCore::createView
  45. */
  46. virtual GpuBufferView* createView();
  47. /**
  48. * @copydoc GpuBufferCore::destroyView
  49. */
  50. virtual void destroyView(GpuBufferView* view);
  51. /**
  52. * @copydoc GpuBufferCore::initialize
  53. */
  54. void initialize();
  55. };
  56. }