#ifndef RenderQueue_h__ #define RenderQueue_h__ #include #include #include "../Common.h" #include "../GLM.h" #include "../Core/Util/Rectangle.h" #include "../Core/Entity.h" #include "Camera.h" #include "RenderJob.h" #include "ModelJob.h" #include "TextJob.h" #include "PointLightJob.h" #include "DirectionalLightJob.h" struct RenderScene { ::Camera* Camera = nullptr; std::list> ForwardJobs; std::list> PointLightJobs; std::list> TextJobs; std::list> DirectionalLightJobs; Rectangle Viewport; bool ClearDepth = false; void Clear() { ForwardJobs.clear(); PointLightJobs.clear(); TextJobs.clear(); DirectionalLightJobs.clear(); } }; struct RenderFrame { public: void Add(RenderScene &scene) { RenderScenes.push_back(std::shared_ptr(new RenderScene(scene))); m_Size++; } void Clear() { RenderScenes.clear(); m_Size = 0; } int Size() const { return m_Size; } std::list>::const_iterator begin() { return RenderScenes.begin(); } std::list>::const_iterator end() { return RenderScenes.end(); } std::list> RenderScenes; private: int m_Size = 0; }; #endif