cleanup and framebuffer creation
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
@@ -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; };
|
||||
|
||||
31
open_engine/include/open_engine/renderer/framebuffer.hpp
Normal file
31
open_engine/include/open_engine/renderer/framebuffer.hpp
Normal 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
|
||||
@@ -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();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user