BsGLHardwareBufferManager.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "BsGLHardwareBufferManager.h"
  2. #include "BsGLVertexBuffer.h"
  3. #include "BsGLIndexBuffer.h"
  4. #include "BsGLGpuBuffer.h"
  5. #include "BsHardwareBuffer.h"
  6. #include "BsGLGpuParamBlockBuffer.h"
  7. #include "BsRenderSystem.h"
  8. #include "BsRenderSystemCapabilities.h"
  9. namespace BansheeEngine
  10. {
  11. GpuParamBlockBufferPtr GLHardwareBufferManager::createGpuParamBlockBufferImpl()
  12. {
  13. return bs_core_ptr<GLGpuParamBlockBuffer, PoolAlloc>(new (bs_alloc<GLGpuParamBlockBuffer, PoolAlloc>()) GLGpuParamBlockBuffer());
  14. }
  15. GpuBufferPtr GLHardwareBufferManager::createGpuBufferImpl(UINT32 elementCount, UINT32 elementSize,
  16. GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite, bool useCounter)
  17. {
  18. return bs_core_ptr<GLGpuBuffer, PoolAlloc>(new (bs_alloc<GLGpuBuffer, PoolAlloc>()) GLGpuBuffer(elementCount, elementSize, type, usage, randomGpuWrite, useCounter));
  19. }
  20. SPtr<VertexBufferCore> GLHardwareBufferCoreManager::createVertexBufferImpl(UINT32 vertexSize, UINT32 numVerts, GpuBufferUsage usage, bool streamOut)
  21. {
  22. return bs_shared_ptr<GLVertexBufferCore>(vertexSize, numVerts, usage, streamOut);
  23. }
  24. SPtr<IndexBufferCore> GLHardwareBufferCoreManager::createIndexBufferImpl(IndexType itype, UINT32 numIndexes, GpuBufferUsage usage)
  25. {
  26. return bs_shared_ptr<GLIndexBufferCore>(itype, numIndexes, usage);
  27. }
  28. GLenum GLHardwareBufferCoreManager::getGLUsage(GpuBufferUsage usage)
  29. {
  30. switch(usage)
  31. {
  32. case GBU_STATIC:
  33. return GL_STATIC_DRAW;
  34. case GBU_DYNAMIC:
  35. return GL_DYNAMIC_DRAW;
  36. default:
  37. return GL_DYNAMIC_DRAW;
  38. };
  39. }
  40. GLenum GLHardwareBufferCoreManager::getGLType(VertexElementType type)
  41. {
  42. switch(type)
  43. {
  44. case VET_FLOAT1:
  45. case VET_FLOAT2:
  46. case VET_FLOAT3:
  47. case VET_FLOAT4:
  48. return GL_FLOAT;
  49. case VET_SHORT1:
  50. case VET_SHORT2:
  51. case VET_SHORT3:
  52. case VET_SHORT4:
  53. return GL_SHORT;
  54. case VET_COLOR:
  55. case VET_COLOR_ABGR:
  56. case VET_COLOR_ARGB:
  57. case VET_UBYTE4:
  58. return GL_UNSIGNED_BYTE;
  59. default:
  60. return 0;
  61. };
  62. }
  63. }