1 // ---------------------------------------------------------------------------
\r
3 // @file TwOpenGLCore.h
\r
4 // @brief OpenGL Core graph functions
\r
5 // @author Philippe Decaudin - http://www.antisphere.com
\r
6 // @license This file is part of the AntTweakBar library.
\r
7 // For conditions of distribution and use, see License.txt
\r
9 // note: Private header
\r
11 // ---------------------------------------------------------------------------
\r
14 #if !defined ANT_TW_OPENGL_CORE_INCLUDED
\r
15 #define ANT_TW_OPENGL_CORE_INCLUDED
\r
17 #include "TwGraph.h"
\r
19 // ---------------------------------------------------------------------------
\r
21 class CTwGraphOpenGLCore : public ITwGraph
\r
26 virtual void BeginDraw(int _WndWidth, int _WndHeight);
\r
27 virtual void EndDraw();
\r
28 virtual bool IsDrawing();
\r
29 virtual void Restore();
\r
30 virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color0, color32 _Color1, bool _AntiAliased=false);
\r
31 virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color, bool _AntiAliased=false) { DrawLine(_X0, _Y0, _X1, _Y1, _Color, _Color, _AntiAliased); }
\r
32 virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color00, color32 _Color10, color32 _Color01, color32 _Color11);
\r
33 virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color) { DrawRect(_X0, _Y0, _X1, _Y1, _Color, _Color, _Color, _Color); }
\r
34 virtual void DrawTriangles(int _NumTriangles, int *_Vertices, color32 *_Colors, Cull _CullMode);
\r
36 virtual void * NewTextObj();
\r
37 virtual void DeleteTextObj(void *_TextObj);
\r
38 virtual void BuildText(void *_TextObj, const std::string *_TextLines, color32 *_LineColors, color32 *_LineBgColors, int _NbLines, const CTexFont *_Font, int _Sep, int _BgWidth);
\r
39 virtual void DrawText(void *_TextObj, int _X, int _Y, color32 _Color, color32 _BgColor);
\r
41 virtual void ChangeViewport(int _X0, int _Y0, int _Width, int _Height, int _OffsetX, int _OffsetY);
\r
42 virtual void RestoreViewport();
\r
43 virtual void SetScissor(int _X0, int _Y0, int _Width, int _Height);
\r
48 const CTexFont * m_FontTex;
\r
50 GLfloat m_PrevLineWidth;
\r
51 GLint m_PrevActiveTexture;
\r
52 GLint m_PrevTexture;
\r
54 GLboolean m_PrevLineSmooth;
\r
55 GLboolean m_PrevCullFace;
\r
56 GLboolean m_PrevDepthTest;
\r
57 GLboolean m_PrevBlend;
\r
58 GLint m_PrevSrcBlend;
\r
59 GLint m_PrevDstBlend;
\r
60 GLboolean m_PrevScissorTest;
\r
61 GLint m_PrevScissorBox[4];
\r
62 GLint m_PrevViewport[4];
\r
63 GLuint m_PrevProgramObject;
\r
65 GLuint m_LineRectVS;
\r
66 GLuint m_LineRectFS;
\r
67 GLuint m_LineRectProgram;
\r
68 GLuint m_LineRectVArray;
\r
69 GLuint m_LineRectVertices;
\r
70 GLuint m_LineRectColors;
\r
73 GLuint m_TriProgram;
\r
76 GLuint m_TriUniProgram;
\r
79 GLuint m_TriTexProgram;
\r
80 GLuint m_TriTexUniVS;
\r
81 GLuint m_TriTexUniFS;
\r
82 GLuint m_TriTexUniProgram;
\r
84 GLuint m_TriVertices;
\r
87 GLint m_TriLocationOffset;
\r
88 GLint m_TriLocationWndSize;
\r
89 GLint m_TriUniLocationOffset;
\r
90 GLint m_TriUniLocationWndSize;
\r
91 GLint m_TriUniLocationColor;
\r
92 GLint m_TriTexLocationOffset;
\r
93 GLint m_TriTexLocationWndSize;
\r
94 GLint m_TriTexLocationTexture;
\r
95 GLint m_TriTexUniLocationOffset;
\r
96 GLint m_TriTexUniLocationWndSize;
\r
97 GLint m_TriTexUniLocationColor;
\r
98 GLint m_TriTexUniLocationTexture;
\r
99 size_t m_TriBufferSize;
\r
106 struct Vec2 { GLfloat x, y; Vec2(){} Vec2(GLfloat _X, GLfloat _Y):x(_X),y(_Y){} Vec2(int _X, int _Y):x(GLfloat(_X)),y(GLfloat(_Y)){} };
\r
109 std::vector<Vec2> m_TextVerts;
\r
110 std::vector<Vec2> m_TextUVs;
\r
111 std::vector<Vec2> m_BgVerts;
\r
112 std::vector<color32>m_Colors;
\r
113 std::vector<color32>m_BgColors;
\r
115 void ResizeTriBuffers(size_t _NewSize);
\r
118 // ---------------------------------------------------------------------------
\r
121 #endif // !defined ANT_TW_OPENGL_CORE_INCLUDED
\r