BsCoreRenderer.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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, const std::function<void()>& callback)
  26. {
  27. mRenderCallbacks[camera][index] = callback;
  28. }
  29. void CoreRenderer::_unregisterRenderCallback(const CameraCore* camera, INT32 index)
  30. {
  31. auto iterFind = mRenderCallbacks.find(camera);
  32. if (iterFind != mRenderCallbacks.end())
  33. {
  34. iterFind->second.erase(index);
  35. if (iterFind->second.empty())
  36. mRenderCallbacks.erase(iterFind);
  37. }
  38. }
  39. }