#ifndef ROOT_TGLFBO
#define ROOT_TGLFBO
#include "Rtypes.h"
class TGLFBO
{
private:
TGLFBO(const TGLFBO&);
TGLFBO& operator=(const TGLFBO&);
protected:
UInt_t fFrameBuffer;
UInt_t fColorTexture;
UInt_t fDepthBuffer;
UInt_t fMSFrameBuffer;
UInt_t fMSColorBuffer;
Int_t fW, fH, fReqW, fReqH, fMSSamples, fMSCoverageSamples;
Float_t fWScale, fHScale;
Bool_t fIsRescaled;
static Bool_t fgRescaleToPow2;
static Bool_t fgMultiSampleNAWarned;
void InitStandard();
void InitMultiSample();
UInt_t CreateAndAttachRenderBuffer(Int_t format, Int_t type);
UInt_t CreateAndAttachColorTexture();
public:
TGLFBO();
virtual ~TGLFBO();
void Init(int w, int h, int ms_samples=0);
void Release();
void Bind();
void Unbind();
void BindTexture();
void UnbindTexture();
void SetAsReadBuffer();
Int_t GetW() const { return fW; }
Int_t GetH() const { return fH; }
Int_t GetReqW() const { return fReqW; }
Int_t GetReqH() const { return fReqH; }
Int_t GetMSSamples() const { return fMSSamples; }
Int_t GetMSCoverageSamples() const { return fMSCoverageSamples; }
Float_t GetWScale() const { return fWScale; }
Float_t GetHScale() const { return fHScale; }
Bool_t GetIsRescaled() const { return fIsRescaled; }
static Bool_t GetRescaleToPow2();
static void SetRescaleToPow2(Bool_t r);
ClassDef(TGLFBO, 0);
};
#endif