Removing big memory hog from renderer
This commit is contained in:
		@ -125,25 +125,11 @@ public:
 | 
			
		||||
 | 
			
		||||
class Viewport : EditorWindow {
 | 
			
		||||
public:
 | 
			
		||||
    Viewport (Scene& scene) : EditorWindow("SceneView") {
 | 
			
		||||
       Framebuffer framebuffer = Framebuffer((int)ImGui::GetWindowWidth(),(int)ImGui::GetWindowHeight());
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
       Renderer renderer = Renderer();
 | 
			
		||||
       renderer.Prepare(scene);
 | 
			
		||||
       renderer.Render(&framebuffer, scene);
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
       
 | 
			
		||||
   
 | 
			
		||||
   
 | 
			
		||||
    Viewport (Framebuffer& fb) : EditorWindow("SceneView") {
 | 
			
		||||
      ImGui::Image(
 | 
			
		||||
            (void*)(intptr_t)framebuffer.GetColourAttachment(),
 | 
			
		||||
            (void*)(intptr_t)fb.GetColourAttachment(),
 | 
			
		||||
            ImVec2{ (float)ImGui::GetWindowWidth(),(float)ImGui::GetWindowHeight() }
 | 
			
		||||
        );
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        //ImGuizmo::SetDrawlist();
 | 
			
		||||
        //ImGuizmo::SetRect(ImGui::GetWindowPos().x, ImGui::GetWindowPos().y, ImGui::GetWindowWidth(), ImGui::GetWindowHeight());
 | 
			
		||||
 | 
			
		||||
@ -14,17 +14,28 @@
 | 
			
		||||
#include "AssetManagement/AssetManager.h"
 | 
			
		||||
#include "UI/MainMenuBar.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const unsigned int MS_PER_UPDATE = 2;
 | 
			
		||||
void CreateTestProject(std::unique_ptr<Project>& project, Scene& scene);
 | 
			
		||||
 | 
			
		||||
class Editor : public Application {
 | 
			
		||||
public:
 | 
			
		||||
    Editor() : Application("Editor") {}
 | 
			
		||||
    Editor() : Application("Editor"){
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Run() override
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        auto NativeEditorWindow = NativeWindow(1200, 700);
 | 
			
		||||
        //auto renderer =  Renderer();
 | 
			
		||||
 | 
			
		||||
        framebuffer = new Framebuffer(800, 600);
 | 
			
		||||
        auto renderer =  Renderer(RendererConfig{ 
 | 
			
		||||
            1200, // Screen Width
 | 
			
		||||
            700, // Screen Height
 | 
			
		||||
            glm::vec3{0,0,0}, // Clear Color
 | 
			
		||||
            true // Depth testing  
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        auto GuiRenderer = GUIRenderer(NativeEditorWindow);
 | 
			
		||||
 | 
			
		||||
        Selected = (entt::entity)-1;
 | 
			
		||||
@ -33,10 +44,11 @@ public:
 | 
			
		||||
 | 
			
		||||
        ActiveScene.Start();
 | 
			
		||||
 | 
			
		||||
        renderer.setCurrentFrameBuffer(*framebuffer);
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        double previous = glfwGetTime();
 | 
			
		||||
        double lag = 0.0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        while (!NativeEditorWindow.WindowShouldClose())
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@ -53,8 +65,13 @@ public:
 | 
			
		||||
                lag -= MS_PER_UPDATE;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
           // renderer.Render(framebuffer, ActiveScene);
 | 
			
		||||
            
 | 
			
		||||
            // submit DrawCommands for all render3DComponents
 | 
			
		||||
            auto group = ActiveScene.getReg().view<TransformComponent, Render3DComponent>();
 | 
			
		||||
            group.each([&renderer](auto enity, TransformComponent& t, Render3DComponent& renderComponent) {
 | 
			
		||||
                renderer.Submit(renderComponent, t);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            renderer.Render();
 | 
			
		||||
 | 
			
		||||
            GuiRenderer.Begin();
 | 
			
		||||
            RenderGUI();
 | 
			
		||||
@ -66,6 +83,8 @@ public:
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        delete framebuffer;
 | 
			
		||||
        ActiveScene.Stop();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
@ -86,7 +105,7 @@ public:
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            Viewport sceneview = Viewport(ActiveScene);
 | 
			
		||||
            Viewport sceneview = Viewport(*framebuffer);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
@ -108,7 +127,7 @@ public:
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            AssetFinder assetsView = AssetFinder();
 | 
			
		||||
          //  AssetFinder assetsView = AssetFinder();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
@ -127,6 +146,8 @@ private:
 | 
			
		||||
    std::unique_ptr<Project> CurrentProject;
 | 
			
		||||
    Scene ActiveScene;
 | 
			
		||||
    entt::entity  Selected;
 | 
			
		||||
    Framebuffer* framebuffer ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user