BsGLHardwareBufferManager.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "BsGLPrerequisites.h"
  3. #include "BsHardwareBufferManager.h"
  4. namespace BansheeEngine
  5. {
  6. /**
  7. * @brief Handles creation of OpenGL specific hardware buffers.
  8. */
  9. class BS_RSGL_EXPORT GLHardwareBufferManager : public HardwareBufferManager
  10. {
  11. protected:
  12. /** @copydoc HardwareBufferManager::createGpuParamBlockBufferImpl */
  13. GpuParamBlockBufferPtr createGpuParamBlockBufferImpl();
  14. /**
  15. * @copydoc HardwareBufferManager::createGenericBufferImpl
  16. */
  17. GpuBufferPtr createGpuBufferImpl(UINT32 elementCount, UINT32 elementSize,
  18. GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite = false, bool useCounter = false);
  19. };
  20. /**
  21. * @brief Handles creation of OpenGL specific hardware buffers.
  22. */
  23. class BS_RSGL_EXPORT GLHardwareBufferCoreManager : public HardwareBufferCoreManager
  24. {
  25. public:
  26. /**
  27. * @brief Converts engine buffer usage flags into OpenGL specific flags.
  28. */
  29. static GLenum getGLUsage(GpuBufferUsage usage);
  30. /**
  31. * @brief Converts vertex element type into OpenGL specific type.
  32. */
  33. static GLenum getGLType(VertexElementType type);
  34. protected:
  35. /**
  36. * @copydoc HardwareBufferCoreManager::createVertexBufferImpl
  37. */
  38. SPtr<VertexBufferCore> createVertexBufferImpl(UINT32 vertexSize,
  39. UINT32 numVerts, GpuBufferUsage usage, bool streamOut = false);
  40. /**
  41. * @copydoc HardwareBufferCoreManager::createIndexBufferImpl
  42. */
  43. SPtr<IndexBufferCore> createIndexBufferImpl(IndexType itype, UINT32 numIndexes, GpuBufferUsage usage);
  44. };
  45. }