light/modules/renderer/public/programs/texture.hpp

76 lines
1.2 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
#include <math/vec2.hpp>
#include <math/vec4.hpp>
2025-07-11 01:04:37 +03:30
#include <renderer/programs/renderer_program.hpp>
2022-03-08 21:19:19 +03:30
2025-07-11 00:05:48 +03:30
namespace lt {
2022-03-08 21:19:19 +03:30
class Shader;
class VertexBuffer;
class IndexBuffer;
class VertexLayout;
class OrthographicCamera;
class SharedContext;
class TextureRendererProgram: RendererProgram
{
public:
2025-07-07 15:13:05 +03:30
~TextureRendererProgram() override = default;
2022-03-08 21:19:19 +03:30
struct TextureVertexData
{
math::vec4 position;
2025-07-06 14:02:50 +03:30
math::vec2 texcoord;
2022-03-08 21:19:19 +03:30
};
TextureRendererProgram(
unsigned int max_vertices,
const Ref<SharedContext> &shared_context,
Ref<Shader> shader
);
2022-03-08 21:19:19 +03:30
2025-07-06 14:02:50 +03:30
auto advance() -> bool;
2022-03-08 21:19:19 +03:30
void map() override;
2025-07-05 16:07:51 +03:30
void un_map() override;
2022-03-08 21:19:19 +03:30
void bind() override;
2022-03-08 21:19:19 +03:30
2025-07-06 14:02:50 +03:30
auto get_map_current() -> TextureVertexData *
2025-07-05 13:28:41 +03:30
{
2025-07-07 15:13:05 +03:30
return &m_map[m_idx];
2025-07-05 13:28:41 +03:30
}
2022-03-08 21:19:19 +03:30
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_quad_count() const -> unsigned int
2025-07-05 13:28:41 +03:30
{
return m_quad_count;
2025-07-05 13:28:41 +03:30
}
2022-03-08 21:19:19 +03:30
2025-07-06 16:52:50 +03:30
[[nodiscard]] constexpr auto get_vertex_size() const -> unsigned int
2025-07-05 13:28:41 +03:30
{
return sizeof(TextureVertexData);
}
2025-07-05 16:07:51 +03:30
private:
Ref<Shader> m_shader;
Ref<VertexBuffer> m_vertex_buffer;
Ref<IndexBuffer> m_index_buffer;
Ref<VertexLayout> m_vertex_layout;
2025-07-07 15:13:05 +03:30
std::span<TextureVertexData> m_map;
2025-07-05 16:07:51 +03:30
2025-07-07 15:13:05 +03:30
size_t m_idx {};
2025-07-05 16:07:51 +03:30
2025-07-07 15:13:05 +03:30
unsigned int m_quad_count { 0u };
2025-07-05 16:07:51 +03:30
unsigned int m_max_vertices;
2022-03-08 21:19:19 +03:30
};
2025-07-11 00:05:48 +03:30
} // namespace lt