cleanup and framebuffer creation

This commit is contained in:
Erris
2026-02-05 17:06:20 +01:00
parent 40152fafff
commit 6ba709bf4f
20 changed files with 13996 additions and 26 deletions

View File

@@ -1,22 +1,26 @@
#ifndef OPEN_ENGINE_HPP
#define OPEN_ENGINE_HPP
#include "open_engine/core.hpp"
#include "open_engine/ref_scope.hpp"
#include "open_engine/application.hpp"
#include "open_engine/logging.hpp"
#include "open_engine/events/key_event.hpp"
#include "open_engine/orthographic_camera_controller.hpp"
#include "open_engine/imgui/imgui_layer.hpp"
#include "open_engine/renderer/render_command.hpp"
#include "open_engine/renderer/renderer.hpp"
#include "open_engine/events/key_event.hpp"
#include "open_engine/application.hpp"
#include "open_engine/ref_scope.hpp"
#include "open_engine/logging.hpp"
#include "open_engine/core/time.hpp"
#include "open_engine/core.hpp"
#include "open_engine/input/input_system.hpp"
#include "open_engine/input/mouse_codes.hpp"
#include "open_engine/input/keycodes.hpp"
#include "open_engine/renderer/render_command.hpp"
#include "open_engine/renderer/framebuffer.hpp"
#include "open_engine/renderer/renderer2d.hpp"
#include "open_engine/renderer/renderer.hpp"
#include "open_engine/renderer/texture.hpp"
#include "open_engine/renderer/buffer.hpp"
#include "open_engine/renderer/shader.hpp"
#include "open_engine/renderer/texture.hpp"
#include "open_engine/orthographic_camera_controller.hpp"
#include "open_engine/renderer/renderer2d.hpp"
#endif // OPEN_ENGINE_HPP

View File

@@ -1,6 +1,7 @@
#ifndef IMGUI_LAYER_HPP
#define IMGUI_LAYER_HPP
#include "open_engine/events/event.hpp"
#include "open_engine/layer.hpp"
namespace OpenEngine {
@@ -13,6 +14,7 @@ namespace OpenEngine {
virtual void OnAttach() override;
virtual void OnDetach() override;
virtual void OnImGuiRender() override;
virtual void OnEvent(Event& event) override;
void Begin();
void End();

View File

@@ -0,0 +1,34 @@
#ifndef OPENGL_FRAMEBUFFER_HPP
#define OPENGL_FRAMEBUFFER_HPP
#include <renderer/framebuffer.hpp>
#include <cstdint>
namespace OpenEngine {
class OpenGLFramebuffer : public FrameBuffer
{
public:
OpenGLFramebuffer(const FramebufferSpecification& spec);
virtual ~OpenGLFramebuffer();
void Invalidate();
virtual void Bind() override;
virtual void Unbind() override;
virtual void Resize(uint32_t width, uint32_t height) override;
virtual uint32_t GetColorAttachmentRendererID() const override { return color_attachment; }
virtual const FramebufferSpecification& GetSpecification() const override { return specs; }
private:
uint32_t id = 0;
uint32_t color_attachment = 0, depth_attachment = 0;
FramebufferSpecification specs;
};
}
#endif // OPENGL_FRAMEBUFFER_HPP

View File

@@ -16,6 +16,7 @@ namespace OpenEngine {
void OnUpdate();
void OnEvent(Event& e);
void OnResize(float width, float height);
const OrthographicCamera& GetCamera() const { return camera; };
OrthographicCamera& GetCamera() { return camera; };

View File

@@ -0,0 +1,31 @@
#ifndef FRAMEBUFFER_HPP
#define FRAMEBUFFER_HPP
#include <cstdint>
namespace OpenEngine {
struct FramebufferSpecification
{
uint32_t width, height;
uint32_t samples = 1;
bool swap_chain_target = false;
};
class FrameBuffer
{
public:
virtual void Bind() = 0;
virtual void Unbind() = 0;
virtual void Resize(uint32_t width, uint32_t height) = 0;
virtual uint32_t GetColorAttachmentRendererID() const = 0;
virtual const FramebufferSpecification& GetSpecification() const = 0;
static Ref<FrameBuffer> Create(const FramebufferSpecification& spec);
};
}
#endif // FRAMEBUFFER_HPP

View File

@@ -1,7 +1,6 @@
#ifndef RENDERER2D_HPP
#define RENDERER2D_HPP
#include "open_engine/logging.hpp"
#include "open_engine/orthographic_camera.hpp"
#include "open_engine/renderer/texture.hpp"
#include "open_engine/ref_scope.hpp"
@@ -16,6 +15,15 @@ namespace OpenEngine {
float rotation = 0.0f;
};
struct Statistics
{
uint32_t draw_calls = 0;
uint32_t quad_count = 0;
uint32_t GetToralVertexCount() { return quad_count * 4; };
uint32_t GetToralIndexCount() { return quad_count * 6; };
};
class Renderer2D
{
public:
@@ -28,6 +36,12 @@ namespace OpenEngine {
static void DrawQuad(const Transform& transform_data, const glm::vec4& color);
static void DrawQuad(const Transform& transform_data, const Ref<Texture2D>& texture, float tiling_factor = 1.0f);
static void ResetStats();
static const Statistics& GetStats();
private:
static void FlushAndReset();
};
}