2
0

BsCoreRenderer.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "BsCoreRenderer.h"
  2. #include "BsCoreThread.h"
  3. #include "BsRenderAPI.h"
  4. #include "BsMesh.h"
  5. #include "BsMaterial.h"
  6. #include "BsPass.h"
  7. #include "BsBlendState.h"
  8. #include "BsDepthStencilState.h"
  9. #include "BsRasterizerState.h"
  10. #include "BsGpuParams.h"
  11. namespace BansheeEngine
  12. {
  13. CoreRenderer::CoreRenderer()
  14. { }
  15. RendererMeshDataPtr CoreRenderer::_createMeshData(UINT32 numVertices, UINT32 numIndices, VertexLayout layout, IndexType indexType)
  16. {
  17. return bs_shared_ptr<RendererMeshData>(new (bs_alloc<RendererMeshData>())
  18. RendererMeshData(numVertices, numIndices, layout, indexType));
  19. }
  20. RendererMeshDataPtr CoreRenderer::_createMeshData(const MeshDataPtr& meshData)
  21. {
  22. return bs_shared_ptr<RendererMeshData>(new (bs_alloc<RendererMeshData>())
  23. RendererMeshData(meshData));
  24. }
  25. void CoreRenderer::_registerRenderCallback(const CameraCore* camera, INT32 index,
  26. const std::function<void()>& callback, bool isOverlay)
  27. {
  28. mRenderCallbacks[camera][index] = { isOverlay, callback };
  29. }
  30. void CoreRenderer::_unregisterRenderCallback(const CameraCore* camera, INT32 index)
  31. {
  32. auto iterFind = mRenderCallbacks.find(camera);
  33. if (iterFind != mRenderCallbacks.end())
  34. {
  35. iterFind->second.erase(index);
  36. if (iterFind->second.empty())
  37. mRenderCallbacks.erase(iterFind);
  38. }
  39. }
  40. }