49 lines
982 B
C++
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
|