BsCoreRenderer.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsCoreRenderer.h"
  4. #include "BsCoreThread.h"
  5. #include "BsRenderAPI.h"
  6. #include "BsMesh.h"
  7. #include "BsMaterial.h"
  8. #include "BsPass.h"
  9. #include "BsBlendState.h"
  10. #include "BsDepthStencilState.h"
  11. #include "BsRasterizerState.h"
  12. #include "BsGpuParams.h"
  13. namespace BansheeEngine
  14. {
  15. CoreRenderer::CoreRenderer()
  16. { }
  17. SPtr<RendererMeshData> CoreRenderer::_createMeshData(UINT32 numVertices, UINT32 numIndices, VertexLayout layout, IndexType indexType)
  18. {
  19. return bs_shared_ptr<RendererMeshData>(new (bs_alloc<RendererMeshData>())
  20. RendererMeshData(numVertices, numIndices, layout, indexType));
  21. }
  22. SPtr<RendererMeshData> CoreRenderer::_createMeshData(const SPtr<MeshData>& meshData)
  23. {
  24. return bs_shared_ptr<RendererMeshData>(new (bs_alloc<RendererMeshData>())
  25. RendererMeshData(meshData));
  26. }
  27. void CoreRenderer::registerRenderCallback(const CameraCore* camera, INT32 index,
  28. const std::function<void()>& callback, bool isOverlay)
  29. {
  30. mRenderCallbacks[camera][index] = { isOverlay, callback };
  31. }
  32. void CoreRenderer::unregisterRenderCallback(const CameraCore* camera, INT32 index)
  33. {
  34. auto iterFind = mRenderCallbacks.find(camera);
  35. if (iterFind != mRenderCallbacks.end())
  36. {
  37. iterFind->second.erase(index);
  38. if (iterFind->second.empty())
  39. mRenderCallbacks.erase(iterFind);
  40. }
  41. }
  42. }