BsGLHardwareBufferManager.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. public:
  12. /**
  13. * @brief Converts engine buffer usage flags into OpenGL specific flags.
  14. */
  15. static GLenum getGLUsage(GpuBufferUsage usage);
  16. /**
  17. * @brief Converts vertex element type into OpenGL specific type.
  18. */
  19. static GLenum getGLType(VertexElementType type);
  20. protected:
  21. /**
  22. * @copydoc HardwareBufferManager::createVertexBufferImpl
  23. */
  24. VertexBufferPtr createVertexBufferImpl(UINT32 vertexSize,
  25. UINT32 numVerts, GpuBufferUsage usage, bool streamOut = false);
  26. /**
  27. * @copydoc HardwareBufferManager::createIndexBufferImpl
  28. */
  29. IndexBufferPtr createIndexBufferImpl(
  30. IndexBuffer::IndexType itype, UINT32 numIndexes,
  31. GpuBufferUsage usage);
  32. /** @copydoc HardwareBufferManager::createGpuParamBlockBufferImpl */
  33. GpuParamBlockBufferPtr createGpuParamBlockBufferImpl();
  34. /**
  35. * @copydoc HardwareBufferManager::createGenericBufferImpl
  36. */
  37. GpuBufferPtr createGpuBufferImpl(UINT32 elementCount, UINT32 elementSize,
  38. GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite = false, bool useCounter = false);
  39. };
  40. }