Removing big memory hog from renderer

This commit is contained in:
2022-12-21 19:11:27 +01:00
parent a1ec94e983
commit e7f1bd7d52
5 changed files with 142 additions and 82 deletions

View File

@ -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());

View File

@ -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 ;
};