light/modules/renderer/private/programs/tinted_texture.hpp
light7734 d83e269432
Some checks reported errors
continuous-integration/drone/push Build was killed
refactor: move renderer gl/dx files to private section
2025-07-23 10:11:55 +03:30

77 lines
1.3 KiB
C++

#pragma once
#include <math/vec2.hpp>
#include <math/vec4.hpp>
#include <renderer/programs/renderer_program.hpp>
#include <span>
namespace lt {
class Shader;
class VertexBuffer;
class IndexBuffer;
class VertexLayout;
class OrthographicCamera;
class SharedContext;
class TintedTextureRendererProgram: RendererProgram
{
public:
~TintedTextureRendererProgram() override = default;
struct TintedTextureVertexData
{
math::vec4 position;
math::vec4 tint;
math::vec2 texcoord;
};
TintedTextureRendererProgram(
unsigned int max_vertices,
const Ref<SharedContext> &shared_context,
Ref<Shader> shader
);
auto advance() -> bool;
void map() override;
void un_map() override;
void bind() override;
auto get_map_current() -> TintedTextureVertexData *
{
return &m_map[m_idx];
}
[[nodiscard]] auto get_quad_count() const -> unsigned int
{
return m_quad_count;
}
[[nodiscard]] constexpr auto get_vertex_size() const -> unsigned int
{
return sizeof(TintedTextureVertexData);
}
private:
Ref<Shader> m_shader;
Ref<VertexBuffer> m_vertex_buffer;
Ref<IndexBuffer> m_index_buffer;
Ref<VertexLayout> m_vertex_layout;
std::span<TintedTextureVertexData> m_map;
size_t m_idx {};
unsigned int m_quad_count { 0u };
unsigned int m_max_vertices;
};
} // namespace lt