00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef PBUFF_GLIFT_H
00020 #define PBUFF_GLIFT_H
00021
00022 #include "stateGLI.h"
00023 #include "../util/command.h"
00024 #include <GL/pbuffer.h>
00025 #include <mathGutz.h>
00026 #include <vector>
00027
00028 namespace glift {
00029
00030
00031 class PBuffGlift;
00032 typedef std::vector<PBuffGlift> VecPbuff;
00033 typedef std::vector<PBuffGlift*> VecPbuffP;
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 class PBuffGlift : public StateGLI
00047 {
00048 public:
00049 PBuffGlift( PBuffer* pbuff );
00050 PBuffGlift( int xDim, int yDim, uint mode, PBuffRenCTX renderCTX=NULL );
00051
00052
00053 PBuffGlift( int xDim, int yDim, uint mode, VoidFuncPtr initCB, PBuffRenCTX renderCTX=NULL );
00054 PBuffGlift( int xDim, int yDim, uint mode, Command* initCB, PBuffRenCTX renderCTX=NULL );
00055
00056
00057 virtual ~PBuffGlift();
00058
00059
00060
00061 virtual void enable(bool saveState=false) {m_pbuff->enable(saveState);}
00062 void disable() {m_pbuff->disable(); }
00063
00064
00065 void setSurface( GLenum surface ) {m_pbuff->setSurface(surface);}
00066
00067
00068 void setMipLevel( int level ) {m_pbuff->setMipLevel(level);}
00069
00070
00071 void setCubeFace( GLenum cubeFace ) {m_pbuff->setCubeFace(cubeFace);}
00072
00073
00074 inline PBuffer* pbuff() const;
00075 inline gutz::vec2i dimen() const;
00076 inline void dimen( int& xDim, int& yDim ) const;
00077 inline unsigned int mode() const;
00078 inline int numSurfaces() const;
00079 inline PBuffRenCTX renderCTX() const;
00080
00081
00082 bool hasRendToTex() const {return m_pbuff->hasRendToTex();}
00083 bool hasMipMap() const {return m_pbuff->hasMipMap(); }
00084 bool hasCube() const {return m_pbuff->hasCube(); }
00085
00086 protected:
00087 virtual void bindDef() { m_pbuff->bind(); }
00088 virtual void releaseDef() { m_pbuff->release(); }
00089
00090 private:
00091 PBuffer* m_pbuff;
00092 Command* m_initCB;
00093 bool m_deletePBuff;
00094
00095 PBuffGlift();
00096 void init();
00097 };
00098
00099
00100 inline PBuffer* PBuffGlift::pbuff() const
00101 {
00102 return m_pbuff;
00103 }
00104
00105 inline gutz::vec2i PBuffGlift::dimen() const
00106 {
00107 int x,y;
00108 m_pbuff->dimen(x,y);
00109 return gutz::vec2i(x,y);
00110 }
00111
00112 inline void PBuffGlift::dimen(int& x, int& y) const
00113 {
00114 m_pbuff->dimen(x,y);
00115 }
00116
00117 inline unsigned int PBuffGlift::mode() const
00118 {
00119 return m_pbuff->mode();
00120 }
00121
00122 inline int PBuffGlift::numSurfaces() const
00123 {
00124 return m_pbuff->numSurfaces();
00125 }
00126
00127 inline PBuffRenCTX PBuffGlift::renderCTX() const
00128 {
00129 return m_pbuff->renderCTX();
00130 }
00131
00132
00133 }
00134
00135 #endif
00136
00137