light/modules/engine/include/engine/graphics/renderer_programs/tinted_texture.hpp

67 lines
1.2 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
2025-07-05 13:28:41 +03:30
#include <engine/base/base.hpp>
#include <engine/graphics/renderer_programs/renderer_program.hpp>
2022-03-08 21:19:19 +03:30
#include <glm/glm.hpp>
namespace Light {
class Shader;
class VertexBuffer;
class IndexBuffer;
class VertexLayout;
class OrthographicCamera;
class SharedContext;
class TintedTextureRendererProgram: RendererProgram
{
public:
struct TintedTextureVertexData
{
glm::vec4 position;
glm::vec4 tint;
glm::vec2 texcoord;
};
private:
Ref<Shader> m_shader;
Ref<VertexBuffer> m_vertex_buffer;
Ref<IndexBuffer> m_index_buffer;
Ref<VertexLayout> m_vertex_layout;
2022-03-08 21:19:19 +03:30
TintedTextureVertexData *m_map_current = nullptr;
TintedTextureVertexData *m_map_end = nullptr;
2022-03-08 21:19:19 +03:30
unsigned int m_quad_count;
unsigned int m_max_vertices;
2022-03-08 21:19:19 +03:30
public:
TintedTextureRendererProgram(unsigned int maxVertices, Ref<SharedContext> sharedContext);
bool advance();
2022-03-08 21:19:19 +03:30
void map() override;
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-05 13:28:41 +03:30
inline TintedTextureVertexData *GetMapCurrent()
{
return m_map_current;
2025-07-05 13:28:41 +03:30
}
2022-03-08 21:19:19 +03:30
inline unsigned int get_quad_count() const
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
inline constexpr unsigned int get_vertex_size() const
2025-07-05 13:28:41 +03:30
{
return sizeof(TintedTextureVertexData);
}
2022-03-08 21:19:19 +03:30
};
2025-07-05 13:28:41 +03:30
} // namespace Light