00001 #ifndef _glcontext_hh_ 00002 #define _glcontext_hh_ 00003 00004 #include <SDL/SDL.h> 00005 #include "context.hh" 00006 00007 namespace anoid { 00008 namespace context { 00009 00010 class GLContext: public Context { 00011 private: 00012 bool drawingTriangles, drawingQuads; 00013 void init(int width, int height, bool window); 00014 void endDrawing(); 00015 protected: 00016 simple::Matrix _current; 00017 void quit(int code); 00018 int frames; 00019 Uint32 then; 00020 public: 00021 GLContext(): frames(0), drawingTriangles(false), drawingQuads(false) {} 00022 virtual void initWindow(int width, int height); 00023 virtual void initFullscreen(int width, int height); 00024 virtual void setView(); 00025 virtual void loadIdentity(); 00026 virtual void pushMatrix(); 00027 virtual void popMatrix(); 00028 virtual void rotate(simple::Matrix &rotation); 00029 virtual void scale(simple::Vector &scale); 00030 virtual void translate(simple::Vector &translation); 00031 virtual int beginFigure(); 00032 virtual void endFigure(); 00033 virtual void removeFigure(int id); 00034 virtual void drawTriangle(simple::Vector &A, simple::Vector &B, simple::Vector &C, simple::Vector &normal, int a = 0); 00035 virtual void drawQuad(simple::Vector &A, simple::Vector &B, simple::Vector &C, simple::Vector &D, simple::Vector &normal, int a = 0); 00036 virtual void drawFigure(int id); 00037 virtual simple::Matrix getMatrix(); 00038 virtual void setMatrix(simple::Matrix &m); 00039 virtual void swapBuffers(); 00040 virtual ~GLContext(); 00041 }; 00042 00043 }; 00044 }; 00045 00046 #endif