#ifndef _GL_PRIMITIVE_RENDERER_H #define _GL_PRIMITIVE_RENDERER_H //#include "OpenGLInclude.h" struct PrimVec2 { PrimVec2() {} PrimVec2(float x, float y) { p[0] = x; p[1] = y; } float p[2]; }; struct PrimVec4 { PrimVec4() {} PrimVec4(float x,float y, float z, float w) { p[0] = x; p[1] = y; p[2] = z; p[3] = w; } float p[4]; }; struct PrimVertex { PrimVertex(const PrimVec4 & p, const PrimVec4 & c, const PrimVec2& u) :position(p), colour(c), uv(u) { } PrimVertex() {} PrimVec4 position; PrimVec4 colour; PrimVec2 uv; } ; class GLPrimitiveRenderer { int m_screenWidth; int m_screenHeight; struct PrimInternalData* m_data; struct PrimInternalData2* m_data2; void loadBufferData(); public: GLPrimitiveRenderer(int screenWidth, int screenHeight); virtual ~GLPrimitiveRenderer(); void drawRect(float x0, float y0, float x1, float y1, float color[4]); void drawTexturedRect(float x0, float y0, float x1, float y1, float color[4], float u0,float v0, float u1, float v1, int useRGBA=0); void drawTexturedRect3D(const PrimVertex& v0,const PrimVertex& v1,const PrimVertex& v2,const PrimVertex& v3,float viewMat[16],float projMat[16], bool useRGBA = true); void drawLine();//float from[4], float to[4], float color[4]); void setScreenSize(int width, int height); void drawTexturedRect2(float x0, float y0, float x1, float y1, float color[4], float u0,float v0, float u1, float v1, int useRGBA=0); void drawTexturedRect2a(float x0, float y0, float x1, float y1, float color[4], float u0,float v0, float u1, float v1, int useRGBA=0); void flushBatchedRects(); void drawTexturedRect3D2Text(bool useRGBA = true); void drawTexturedRect3D2(PrimVertex* vertices, int numVertices, bool useRGBA = true); PrimInternalData* getData() { return m_data; } }; #endif//_GL_PRIMITIVE_RENDERER_H