#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" /* struct SpriteJob : RenderJob { unsigned int ShaderID = 0; unsigned int TextureID = 0; glm::mat4 ModelMatrix; const Texture* DiffuseTexture = nullptr; const Texture* NormalTexture = nullptr; const Texture* SpecularTexture = nullptr; glm::vec4 Color; void CalculateHash() override { Hash = TextureID; } }; struct PointLightJob : RenderJob { glm::vec3 Position; glm::vec3 SpecularColor = glm::vec3(1, 1, 1); glm::vec3 DiffuseColor = glm::vec3(1, 1, 1); float Radius = 1.f; float Intensity = 0.8f; void CalculateHash() override { Hash = 0; } }; */ struct RenderScene { ::Camera* Camera; std::list> ForwardJobs; std::list> LightJobs; Rectangle Viewport; void Clear() { ForwardJobs.clear(); LightJobs.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