2012-11-20 22:35:40 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
// Everything you need to draw a UI collected into a single unit that can be passed around.
|
|
|
|
// Everything forward declared so this header is safe everywhere.
|
|
|
|
|
|
|
|
struct GLSLProgram;
|
|
|
|
class Texture;
|
|
|
|
class DrawBuffer;
|
|
|
|
|
|
|
|
class UIContext {
|
|
|
|
public:
|
|
|
|
UIContext() : uishader_(0), uitexture_(0), uidrawbuffer_(0), uidrawbufferTop_(0) {}
|
|
|
|
|
2012-11-21 14:30:43 +00:00
|
|
|
void Init(const GLSLProgram *uishader, const GLSLProgram *uishadernotex, Texture *uitexture, DrawBuffer *uidrawbuffer, DrawBuffer *uidrawbufferTop) {
|
2012-11-20 22:35:40 +00:00
|
|
|
uishader_ = uishader;
|
2012-11-21 14:30:43 +00:00
|
|
|
uishadernotex_ = uishadernotex;
|
2012-11-20 22:35:40 +00:00
|
|
|
uitexture_ = uitexture;
|
|
|
|
uidrawbuffer_ = uidrawbuffer;
|
|
|
|
uidrawbufferTop_ = uidrawbufferTop;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Begin();
|
2012-11-21 14:30:43 +00:00
|
|
|
void Flush();
|
|
|
|
void FlushNoTex();
|
2012-11-20 22:35:40 +00:00
|
|
|
void End();
|
2012-11-21 14:30:43 +00:00
|
|
|
void RebindTexture();
|
2012-11-20 22:35:40 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
// TODO: Collect these into a UIContext
|
|
|
|
const GLSLProgram *uishader_;
|
2012-11-21 14:30:43 +00:00
|
|
|
const GLSLProgram *uishadernotex_;
|
2012-11-20 22:35:40 +00:00
|
|
|
Texture *uitexture_;
|
|
|
|
DrawBuffer *uidrawbuffer_;
|
|
|
|
DrawBuffer *uidrawbufferTop_;
|
|
|
|
};
|