refactor: move renderer gl/dx files to private section
Some checks reported errors
continuous-integration/drone/push Build was killed
Some checks reported errors
continuous-integration/drone/push Build was killed
This commit is contained in:
parent
65f0d3bb73
commit
d83e269432
26 changed files with 67 additions and 56 deletions
|
@ -4,12 +4,13 @@
|
|||
#include <renderer/blender.hpp>
|
||||
#include <renderer/buffers.hpp>
|
||||
#include <renderer/framebuffer.hpp>
|
||||
#include <renderer/programs/quad.hpp>
|
||||
#include <renderer/programs/texture.hpp>
|
||||
#include <renderer/programs/tinted_texture.hpp>
|
||||
#include <renderer/render_command.hpp>
|
||||
#include <renderer/renderer.hpp>
|
||||
#include <renderer/shader.hpp>
|
||||
#include <renderer/texture.hpp>
|
||||
#include <span>
|
||||
#include <utility>
|
||||
|
||||
namespace lt {
|
||||
|
||||
|
@ -21,20 +22,26 @@ Renderer::Renderer(
|
|||
CreateInfo create_info
|
||||
)
|
||||
: m_quad_renderer(
|
||||
create_scope<QuadRendererProgram>(
|
||||
LT_MAX_QUAD_RENDERER_VERTICES,
|
||||
shared_context,
|
||||
std::move(create_info.quad_renderer_shader)
|
||||
)
|
||||
)
|
||||
, m_texture_renderer(
|
||||
create_scope<TextureRendererProgram>(
|
||||
LT_MAX_TEXTURE_RENDERER_VERTICES,
|
||||
shared_context,
|
||||
std::move(create_info.texture_renderer_shader)
|
||||
)
|
||||
)
|
||||
, m_tinted_texture_renderer(
|
||||
create_scope<TintedTextureRendererProgram>(
|
||||
LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES,
|
||||
shared_context,
|
||||
std::move(create_info.tinted_texture_renderer_shader)
|
||||
)
|
||||
)
|
||||
, m_view_projection_buffer(nullptr)
|
||||
, m_render_command(nullptr)
|
||||
, m_blender(nullptr)
|
||||
|
@ -55,6 +62,10 @@ Renderer::Renderer(
|
|||
m_blender->enable(BlendFactor::SRC_ALPHA, BlendFactor::INVERSE_SRC_ALPHA);
|
||||
}
|
||||
|
||||
Renderer::~Renderer() // NOLINT
|
||||
{
|
||||
}
|
||||
|
||||
auto Renderer::create(
|
||||
GLFWwindow *windowHandle,
|
||||
Ref<SharedContext> sharedContext,
|
||||
|
@ -114,7 +125,7 @@ void Renderer::draw_quad_impl(
|
|||
//==================== DRAW_QUAD_TINT ====================//
|
||||
void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tint)
|
||||
{
|
||||
auto map = std::span<QuadRendererProgram::QuadVertexData> { m_quad_renderer.get_map_current(),
|
||||
auto map = std::span<QuadRendererProgram::QuadVertexData> { m_quad_renderer->get_map_current(),
|
||||
4 };
|
||||
|
||||
// top left
|
||||
|
@ -134,7 +145,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tin
|
|||
map[3].tint = tint;
|
||||
|
||||
// advance
|
||||
if (!m_quad_renderer.advance())
|
||||
if (!m_quad_renderer->advance())
|
||||
{
|
||||
log_wrn("Exceeded LT_MAX_QUAD_RENDERER_VERTICES: {}", LT_MAX_QUAD_RENDERER_VERTICES);
|
||||
flush_scene();
|
||||
|
@ -147,7 +158,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const Ref<Texture> &t
|
|||
|
||||
texture->bind();
|
||||
auto map = std::span<TextureRendererProgram::TextureVertexData> {
|
||||
m_texture_renderer.get_map_current(),
|
||||
m_texture_renderer->get_map_current(),
|
||||
4
|
||||
};
|
||||
|
||||
|
@ -168,7 +179,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const Ref<Texture> &t
|
|||
map[3].texcoord = { 0.0f, 1.0f };
|
||||
|
||||
// advance
|
||||
if (!m_texture_renderer.advance())
|
||||
if (!m_texture_renderer->advance())
|
||||
{
|
||||
log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES);
|
||||
flush_scene();
|
||||
|
@ -185,7 +196,7 @@ void Renderer::draw_quad_impl(
|
|||
|
||||
texture->bind();
|
||||
auto map = std::span<TintedTextureRendererProgram::TintedTextureVertexData> {
|
||||
m_tinted_texture_renderer.get_map_current(),
|
||||
m_tinted_texture_renderer->get_map_current(),
|
||||
4
|
||||
};
|
||||
|
||||
|
@ -209,7 +220,7 @@ void Renderer::draw_quad_impl(
|
|||
map[3].tint = tint;
|
||||
map[3].texcoord = { 0.0f, 1.0f };
|
||||
|
||||
if (!m_tinted_texture_renderer.advance())
|
||||
if (!m_tinted_texture_renderer->advance())
|
||||
{
|
||||
log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES);
|
||||
flush_scene();
|
||||
|
@ -256,66 +267,66 @@ void Renderer::begin_scene_impl(
|
|||
m_view_projection_buffer->un_map();
|
||||
|
||||
// map renderers
|
||||
m_quad_renderer.map();
|
||||
m_texture_renderer.map();
|
||||
m_tinted_texture_renderer.map();
|
||||
m_quad_renderer->map();
|
||||
m_texture_renderer->map();
|
||||
m_tinted_texture_renderer->map();
|
||||
}
|
||||
|
||||
void Renderer::flush_scene()
|
||||
{
|
||||
/* tinted texture renderer */
|
||||
m_tinted_texture_renderer.un_map();
|
||||
if (m_tinted_texture_renderer.get_quad_count())
|
||||
m_tinted_texture_renderer->un_map();
|
||||
if (m_tinted_texture_renderer->get_quad_count())
|
||||
{
|
||||
m_tinted_texture_renderer.bind();
|
||||
m_render_command->draw_indexed(m_tinted_texture_renderer.get_quad_count() * 6u);
|
||||
m_tinted_texture_renderer->bind();
|
||||
m_render_command->draw_indexed(m_tinted_texture_renderer->get_quad_count() * 6u);
|
||||
}
|
||||
|
||||
/* quad renderer */
|
||||
m_quad_renderer.un_map();
|
||||
if (m_quad_renderer.get_quad_count())
|
||||
m_quad_renderer->un_map();
|
||||
if (m_quad_renderer->get_quad_count())
|
||||
{
|
||||
m_quad_renderer.bind();
|
||||
m_render_command->draw_indexed(m_quad_renderer.get_quad_count() * 6u);
|
||||
m_quad_renderer->bind();
|
||||
m_render_command->draw_indexed(m_quad_renderer->get_quad_count() * 6u);
|
||||
}
|
||||
|
||||
/* texture renderer */
|
||||
m_texture_renderer.un_map();
|
||||
if (m_texture_renderer.get_quad_count())
|
||||
m_texture_renderer->un_map();
|
||||
if (m_texture_renderer->get_quad_count())
|
||||
{
|
||||
m_texture_renderer.bind();
|
||||
m_render_command->draw_indexed(m_texture_renderer.get_quad_count() * 6u);
|
||||
m_texture_renderer->bind();
|
||||
m_render_command->draw_indexed(m_texture_renderer->get_quad_count() * 6u);
|
||||
}
|
||||
|
||||
m_quad_renderer.map();
|
||||
m_texture_renderer.map();
|
||||
m_tinted_texture_renderer.map();
|
||||
m_quad_renderer->map();
|
||||
m_texture_renderer->map();
|
||||
m_tinted_texture_renderer->map();
|
||||
}
|
||||
|
||||
void Renderer::end_scene_impl()
|
||||
{
|
||||
/* tinted texture renderer */
|
||||
m_tinted_texture_renderer.un_map();
|
||||
if (m_tinted_texture_renderer.get_quad_count())
|
||||
m_tinted_texture_renderer->un_map();
|
||||
if (m_tinted_texture_renderer->get_quad_count())
|
||||
{
|
||||
m_tinted_texture_renderer.bind();
|
||||
m_render_command->draw_indexed(m_tinted_texture_renderer.get_quad_count() * 6u);
|
||||
m_tinted_texture_renderer->bind();
|
||||
m_render_command->draw_indexed(m_tinted_texture_renderer->get_quad_count() * 6u);
|
||||
}
|
||||
|
||||
/* quad renderer */
|
||||
m_quad_renderer.un_map();
|
||||
if (m_quad_renderer.get_quad_count())
|
||||
m_quad_renderer->un_map();
|
||||
if (m_quad_renderer->get_quad_count())
|
||||
{
|
||||
m_quad_renderer.bind();
|
||||
m_render_command->draw_indexed(m_quad_renderer.get_quad_count() * 6u);
|
||||
m_quad_renderer->bind();
|
||||
m_render_command->draw_indexed(m_quad_renderer->get_quad_count() * 6u);
|
||||
}
|
||||
|
||||
/* texture renderer */
|
||||
m_texture_renderer.un_map();
|
||||
if (m_texture_renderer.get_quad_count())
|
||||
m_texture_renderer->un_map();
|
||||
if (m_texture_renderer->get_quad_count())
|
||||
{
|
||||
m_texture_renderer.bind();
|
||||
m_render_command->draw_indexed(m_texture_renderer.get_quad_count() * 6u);
|
||||
m_texture_renderer->bind();
|
||||
m_render_command->draw_indexed(m_texture_renderer->get_quad_count() * 6u);
|
||||
}
|
||||
|
||||
// reset frame buffer
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
//
|
||||
#include <math/mat4.hpp>
|
||||
#include <math/vec3.hpp>
|
||||
#include <math/vec4.hpp>
|
||||
|
@ -8,11 +7,6 @@
|
|||
#include <renderer/buffers.hpp>
|
||||
#include <renderer/render_command.hpp>
|
||||
#include <renderer/renderer.hpp>
|
||||
///
|
||||
|
||||
#include <renderer/programs/quad.hpp>
|
||||
#include <renderer/programs/texture.hpp>
|
||||
#include <renderer/programs/tinted_texture.hpp>
|
||||
#include <utility>
|
||||
|
||||
#define LT_MAX_QUAD_RENDERER_VERTICES (1028u * 4u)
|
||||
|
@ -32,6 +26,10 @@ class Camera;
|
|||
class WindowResizedEvent;
|
||||
class Shader;
|
||||
|
||||
class TintedTextureRendererProgram;
|
||||
class QuadRendererProgram;
|
||||
class TextureRendererProgram;
|
||||
|
||||
class Renderer
|
||||
{
|
||||
public:
|
||||
|
@ -107,6 +105,8 @@ public:
|
|||
s_context->end_scene_impl();
|
||||
}
|
||||
|
||||
~Renderer();
|
||||
|
||||
void on_window_resize(const WindowResizedEvent &event);
|
||||
|
||||
void begin_frame();
|
||||
|
@ -116,11 +116,11 @@ public:
|
|||
private:
|
||||
static Renderer *s_context;
|
||||
|
||||
QuadRendererProgram m_quad_renderer;
|
||||
Scope<QuadRendererProgram> m_quad_renderer;
|
||||
|
||||
TextureRendererProgram m_texture_renderer;
|
||||
Scope<TextureRendererProgram> m_texture_renderer;
|
||||
|
||||
TintedTextureRendererProgram m_tinted_texture_renderer;
|
||||
Scope<TintedTextureRendererProgram> m_tinted_texture_renderer;
|
||||
|
||||
Scope<ConstantBuffer> m_view_projection_buffer;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue