00001
00002
00003 #ifndef __GL_RENDER_H
00004 #define __GL_RENDER_H
00005
00006 #include <gra/render/Render.h>
00007 #include <gra/framebuffer/FrameBuffer.h>
00008 #include <esg/SceneGraphObject.h>
00009 #include <esg/energy/PolygonalEnergy.h>
00010 #include <gra/shader/Shader.h>
00011 #include <esg/explorer/ObjsInAreaExplorer.h>
00012 #include <GL/gl.h>
00013
00014 using namespace esg;
00015
00016 namespace gra {
00017
00027 class GRA_EXPORT GLRender : public Render {
00028 protected:
00029 struct TranslucentObj {
00030 bool transformed;
00031 Matrix4 trMat;
00032 SceneGraphObject * pObject;
00033 };
00034
00035 GLuint _displayList;
00036 bool _useDisplayList;
00037
00038 protected:
00045 virtual void _render (Shader& shader,
00046 FrameBuffer& fb,
00047 Camera& camera,
00048 Scene& scene);
00049
00050 public:
00057 GLRender (int * stopFlag,
00058 bool useDisplayList = true)
00059 : Render(stopFlag),
00060 _displayList(0),
00061 _useDisplayList(useDisplayList) {}
00062
00066 ~GLRender () { if (_displayList) glDeleteLists(_displayList,1); }
00067
00071 virtual void clearDisplayList (void) {
00072 if (!_displayList) return;
00073 glDeleteLists(_displayList, 1);
00074 _displayList = 0;
00075 }
00076
00080 virtual void useDisplayList (bool use) {
00081 if (!use) clearDisplayList();
00082 _useDisplayList = use;
00083 }
00084
00088 virtual bool displayListUsed (void) const { return _useDisplayList; }
00089 };
00090
00091 }
00092
00093 #endif // __GL_RENDER_H