49 lines
982 B
C++

/*
Created on 19.06.18.
*/
#pragma once
#include <cstdint>
#include <freetype-gl.h>
#include <glez/font.hpp>
#include <glez/glez.hpp>
#include <glez/texture.hpp>
#include <vector>
#include <vertex-buffer.h>
namespace glez::detail::record {
class RecordedCommands {
public:
struct segment {
std::size_t start { 0 };
std::size_t size { 0 };
glez::texture* texture { nullptr };
glez::font* font { nullptr };
};
RecordedCommands();
~RecordedCommands();
void reset();
void store(glez::vertex* vertices, size_t vcount,
uint32_t* indices, size_t icount);
void bindTexture(glez::texture* tx);
void bindFont(glez::font* font);
void render();
void end();
protected:
void cutSegment();
ftgl::vertex_buffer_t* vertex_buffer {};
std::vector<segment> segments {};
segment current {};
};
extern RecordedCommands* currentRecord;
extern bool isReplaying;
} // namespace glez::detail::record