This commit is contained in:
2025-05-13 02:46:21 +03:00
parent 143e16692e
commit 86914b7fcc
610 changed files with 92343 additions and 2 deletions
+45
View File
@@ -0,0 +1,45 @@
#ifndef IGUIRenderer_h__
#define IGUIRenderer_h__
#include "IImage.h"
#include "GUIVertex.h"
#include <LString.h>
#include <IMemoryStream.h>
#define MAX_DIP_COUNT 128
#define MAX_GUI_VERTEX_COUNT (6 * 4096)
namespace LifeGUI
{
struct GUIBatch
{
IImage* tex;
IImage* font;
bool lines;
int tex_id;
size_t vertex_count;
GUIBatch()
:tex(nullptr), font(nullptr), vertex_count(0)
{
lines = false;
tex_id = 0;
}
};
class IGUIRenderer
{
public:
IGUIRenderer();
void Reset();
void SetTexture(IImage* tex, IImage* font, bool line_geom);
void Write(const GUIVertex& data);
void Write(const GUIVertex* data, size_t count);
virtual void SetScissor(const LifeMath::Rect2i& rect) = 0;
virtual void Render() = 0;
virtual void SetScreenSize(int w, int h) = 0;
protected:
LifeCore::IMemoryStream* buffer;
LifeGUI::GUIBatch batch[MAX_DIP_COUNT];
size_t batch_id;
};
}
#endif // IGUIRenderer_h__