diff --git a/src/inferno/render/framebuffer.cpp b/src/inferno/render/framebuffer.cpp index 0bec36a..f74141d 100644 --- a/src/inferno/render/framebuffer.cpp +++ b/src/inferno/render/framebuffer.cpp @@ -4,7 +4,8 @@ * SPDX-License-Identifier: MIT */ -#include // int8_t +#include // size_t +#include // uint8_t, uint32_t #include "glad/glad.h" #include "ruc/meta/assert.h" @@ -16,8 +17,16 @@ namespace Inferno { std::shared_ptr Framebuffer::create(const Properties& properties) { + VERIFY((properties.attachments.size() > 0 && !properties.renderToScreen) || properties.renderToScreen, + "cant have attachments on the default framebuffer"); + auto result = std::shared_ptr(new Framebuffer(properties)); + if (!properties.renderToScreen) { + result->m_id = UINT_MAX; + glGenFramebuffers(1, &result->m_id); + } + result->createTextures(); return result; @@ -25,6 +34,10 @@ std::shared_ptr Framebuffer::create(const Properties& properties) Framebuffer::~Framebuffer() { + if (m_renderToScreen) { + return; + } + glDeleteFramebuffers(1, &m_id); } diff --git a/src/inferno/render/framebuffer.h b/src/inferno/render/framebuffer.h index dc50505..bf86311 100644 --- a/src/inferno/render/framebuffer.h +++ b/src/inferno/render/framebuffer.h @@ -6,15 +6,15 @@ #pragma once -#include //size_t +#include // size_t #include // uint8_t #include #include // std::shared_ptr +#include #include "glm/ext/vector_float4.hpp" // glm::vec4 #include "inferno/asset/texture.h" -#include "ruc/format/log.h" namespace Inferno { @@ -41,7 +41,6 @@ public: : type(type) { } - ~TypeProperties() {}; Type type; };