BsGLIndexBuffer.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsGLIndexBuffer.h"
  4. #include "BsGLHardwareBufferManager.h"
  5. #include "BsRenderStats.h"
  6. #include "BsException.h"
  7. namespace BansheeEngine
  8. {
  9. GLIndexBufferCore::GLIndexBufferCore(const INDEX_BUFFER_DESC& desc, GpuDeviceFlags deviceMask)
  10. :IndexBufferCore(desc, deviceMask)
  11. {
  12. assert((deviceMask == GDF_DEFAULT || deviceMask == GDF_PRIMARY) && "Multiple GPUs not supported natively on OpenGL.");
  13. }
  14. GLIndexBufferCore::~GLIndexBufferCore()
  15. {
  16. BS_INC_RENDER_STAT_CAT(ResDestroyed, RenderStatObject_IndexBuffer);
  17. }
  18. void GLIndexBufferCore::initialize()
  19. {
  20. mBuffer.initialize(GL_ELEMENT_ARRAY_BUFFER, mSizeInBytes, mUsage);
  21. BS_INC_RENDER_STAT_CAT(ResCreated, RenderStatObject_IndexBuffer);
  22. IndexBufferCore::initialize();
  23. }
  24. void* GLIndexBufferCore::map(UINT32 offset, UINT32 length, GpuLockOptions options)
  25. {
  26. return mBuffer.lock(offset, length, options);
  27. }
  28. void GLIndexBufferCore::unmap()
  29. {
  30. mBuffer.unlock();
  31. }
  32. void GLIndexBufferCore::readData(UINT32 offset, UINT32 length, void* pDest)
  33. {
  34. mBuffer.readData(offset, length, pDest);
  35. }
  36. void GLIndexBufferCore::writeData(UINT32 offset, UINT32 length,
  37. const void* pSource, BufferWriteType writeFlags)
  38. {
  39. mBuffer.writeData(offset, length, pSource, writeFlags);
  40. }
  41. }