BsGLGpuBuffer.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "BsGLPrerequisites.h"
  3. #include "BsGpuBuffer.h"
  4. namespace BansheeEngine
  5. {
  6. /**
  7. * @brief OpenGL implementation of a generic GPU buffer.
  8. */
  9. // TODO - Not implemented, just a dummy class for now
  10. class BS_RSGL_EXPORT GLGpuBuffer : public GpuBuffer
  11. {
  12. public:
  13. ~GLGpuBuffer();
  14. /**
  15. * @copydoc GpuBuffer::lockImpl
  16. */
  17. virtual void* lock(UINT32 offset, UINT32 length, GpuLockOptions options);
  18. /**
  19. * @copydoc GpuBuffer::unlockImpl
  20. */
  21. virtual void unlock();
  22. /**
  23. * @copydoc GpuBuffer::readData
  24. */
  25. virtual void readData(UINT32 offset, UINT32 length, void* pDest);
  26. /**
  27. * @copydoc GpuBuffer::writeData
  28. */
  29. virtual void writeData(UINT32 offset, UINT32 length, const void* pSource,
  30. BufferWriteType writeFlags = BufferWriteType::Normal);
  31. /**
  32. * @copydoc GpuBuffer::copyData
  33. */
  34. void copyData(GpuBuffer& srcBuffer, UINT32 srcOffset,
  35. UINT32 dstOffset, UINT32 length, bool discardWholeBuffer = false);
  36. protected:
  37. friend class GLHardwareBufferManager;
  38. GLGpuBuffer(UINT32 elementCount, UINT32 elementSize, GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite = false, bool useCounter = false);
  39. /**
  40. * @copydoc GpuBuffer::initialize_internal
  41. */
  42. void initialize_internal();
  43. /**
  44. * @copydoc GpuBuffer::destroy_internal
  45. */
  46. void destroy_internal();
  47. /**
  48. * @copydoc GpuBuffer::createView
  49. */
  50. virtual GpuBufferView* createView();
  51. /**
  52. * @copydoc GpuBuffer::destroyView
  53. */
  54. virtual void destroyView(GpuBufferView* view);
  55. };
  56. }