BsGLHardwareBufferManager.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. VertexBufferPtr GLHardwareBufferManager::createVertexBufferImpl(
  12. UINT32 vertexSize, UINT32 numVerts, GpuBufferUsage usage, bool streamOut)
  13. {
  14. return bs_core_ptr<GLVertexBuffer, PoolAlloc>(new (bs_alloc<GLVertexBuffer, PoolAlloc>()) GLVertexBuffer(vertexSize, numVerts, usage));
  15. }
  16. IndexBufferPtr GLHardwareBufferManager::createIndexBufferImpl(IndexType itype, UINT32 numIndexes, GpuBufferUsage usage)
  17. {
  18. return bs_core_ptr<GLIndexBuffer, PoolAlloc>(new (bs_alloc<GLIndexBuffer, PoolAlloc>()) GLIndexBuffer(itype, numIndexes, usage));
  19. }
  20. GpuParamBlockBufferPtr GLHardwareBufferManager::createGpuParamBlockBufferImpl()
  21. {
  22. return bs_core_ptr<GLGpuParamBlockBuffer, PoolAlloc>(new (bs_alloc<GLGpuParamBlockBuffer, PoolAlloc>()) GLGpuParamBlockBuffer());
  23. }
  24. GpuBufferPtr GLHardwareBufferManager::createGpuBufferImpl(UINT32 elementCount, UINT32 elementSize,
  25. GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite, bool useCounter)
  26. {
  27. return bs_core_ptr<GLGpuBuffer, PoolAlloc>(new (bs_alloc<GLGpuBuffer, PoolAlloc>()) GLGpuBuffer(elementCount, elementSize, type, usage, randomGpuWrite, useCounter));
  28. }
  29. GLenum GLHardwareBufferManager::getGLUsage(GpuBufferUsage usage)
  30. {
  31. switch(usage)
  32. {
  33. case GBU_STATIC:
  34. return GL_STATIC_DRAW;
  35. case GBU_DYNAMIC:
  36. return GL_DYNAMIC_DRAW;
  37. default:
  38. return GL_DYNAMIC_DRAW;
  39. };
  40. }
  41. GLenum GLHardwareBufferManager::getGLType(VertexElementType type)
  42. {
  43. switch(type)
  44. {
  45. case VET_FLOAT1:
  46. case VET_FLOAT2:
  47. case VET_FLOAT3:
  48. case VET_FLOAT4:
  49. return GL_FLOAT;
  50. case VET_SHORT1:
  51. case VET_SHORT2:
  52. case VET_SHORT3:
  53. case VET_SHORT4:
  54. return GL_SHORT;
  55. case VET_COLOR:
  56. case VET_COLOR_ABGR:
  57. case VET_COLOR_ARGB:
  58. case VET_UBYTE4:
  59. return GL_UNSIGNED_BYTE;
  60. default:
  61. return 0;
  62. };
  63. }
  64. }