ROOT  6.06/09
Reference Guide
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Private Member Functions | Static Private Attributes | List of all members
TGLObject Class Referenceabstract

Base-class for direct OpenGL renderers.

This allows classes to circumvent passing of TBuffer3D and use user-provided OpenGL code. By convention, if you want class TFoo : public TObject to have direct rendering you should also provide TFooGL : public TGLObject and implement abstract functions SetModel() and SetBBox(). TAttBBox can be used to facilitate calculation of bounding-boxes. See TPointSet3D and TPointSet3DGL.

Definition at line 21 of file TGLObject.h.

Public Member Functions

 TGLObject ()
 
virtual ~TGLObject ()
 
virtual Bool_t ShouldDLCache (const TGLRnrCtx &rnrCtx) const
 Decide if display-list should be used for this pass rendering, as determined by rnrCtx. More...
 
virtual Bool_t KeepDuringSmartRefresh () const
 
virtual void UpdateBoundingBox ()
 Update bounding box from external source. More...
 
virtual Bool_t SetModel (TObject *obj, const Option_t *opt=0)=0
 
virtual void SetBBox ()=0
 
 ClassDef (TGLObject, 0)
 
- Public Member Functions inherited from TGLLogicalShape
 TGLLogicalShape ()
 Constructor. More...
 
 TGLLogicalShape (TObject *obj)
 Constructor with external object. More...
 
 TGLLogicalShape (const TBuffer3D &buffer)
 Constructor from TBuffer3D. More...
 
virtual ~TGLLogicalShape ()
 Destroy logical shape. More...
 
UInt_t Ref () const
 
void AddRef (TGLPhysicalShape *phys) const
 Add reference to given physical shape. More...
 
void SubRef (TGLPhysicalShape *phys) const
 Remove reference to given physical shape, potentially deleting this object when hitting zero ref-count (if fRefStrong is true). More...
 
void StrongRef (Bool_t strong) const
 
void DestroyPhysicals ()
 Destroy all physicals attached to this logical. More...
 
UInt_t UnrefFirstPhysical ()
 Unreferenced first physical in the list, returning its id and making it fit for destruction somewhere else. More...
 
const TGLPhysicalShapeGetFirstPhysical () const
 
TObjectID () const
 
TObjectGetExternal () const
 
TGLSceneGetScene () const
 
const TGLBoundingBoxBoundingBox () const
 
void UpdateBoundingBoxesOfPhysicals ()
 Update bounding-boxed of all dependent physicals. More...
 
Bool_t SetDLCache (Bool_t cached)
 Modify capture of draws into display list cache kTRUE - capture, kFALSE direct draw. More...
 
virtual UInt_t DLOffset (Short_t) const
 
virtual void DLCacheClear ()
 Clear all entries for all LODs for this drawable from the display list cache but keeping the reserved ids from GL context. More...
 
virtual void DLCacheDrop ()
 Drop all entries for all LODs for this drawable from the display list cache, WITHOUT returning the reserved ids to GL context. More...
 
virtual void DLCachePurge ()
 Purge all entries for all LODs for this drawable from the display list cache, returning the reserved ids to GL context. More...
 
virtual ELODAxes SupportedLODAxes () const
 
virtual Short_t QuantizeShapeLOD (Short_t shapeLOD, Short_t combiLOD) const
 Logical shapes usually support only discreet LOD values, especially in view of display-list caching. More...
 
virtual void Draw (TGLRnrCtx &rnrCtx) const
 Draw the GL drawable, using draw flags. More...
 
virtual void DirectDraw (TGLRnrCtx &rnrCtx) const =0
 
virtual void DrawHighlight (TGLRnrCtx &rnrCtx, const TGLPhysicalShape *pshp, Int_t lvl=-1) const
 Draw the logical shape in highlight mode. More...
 
virtual Bool_t IgnoreSizeForOfInterest () const
 Return true if size of this shape should be ignored when determining if the object should be drawn. More...
 
virtual Bool_t SupportsSecondarySelect () const
 
virtual Bool_t AlwaysSecondarySelect () const
 
virtual void ProcessSelection (TGLRnrCtx &rnrCtx, TGLSelectRecord &rec)
 Virtual method called-back after a secondary selection hit is recorded (see TGLViewer::HandleButton(), Ctrl-Button1). More...
 
void InvokeContextMenu (TContextMenu &menu, UInt_t x, UInt_t y) const
 Invoke popup menu or our bound external TObject (if any), using passed 'menu' object, at location 'x' 'y'. More...
 

Static Public Member Functions

static TClassGetGLRenderer (TClass *isa)
 Return direct-rendering GL class for class isa. More...
 
- Static Public Member Functions inherited from TGLLogicalShape
static Bool_t GetIgnoreSizeForCameraInterest ()
 Get state of static fgIgnoreSizeForCameraInterest flag. More...
 
static void SetIgnoreSizeForCameraInterest (Bool_t isfci)
 Set state of static fgIgnoreSizeForCameraInterest flag. More...
 

Protected Member Functions

Bool_t SetModelCheckClass (TObject *obj, TClass *cls)
 Checks if obj is of proper class and sets the model. More...
 
void SetAxisAlignedBBox (Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax)
 Set axis-aligned bounding-box. More...
 
void SetAxisAlignedBBox (const Float_t *p)
 Set axis-aligned bounding-box. More...
 
template<class TT >
TT * SetModelDynCast (TObject *obj)
 
template<class TT >
TT * DynCast (TObject *obj)
 
- Protected Member Functions inherited from TGLLogicalShape
void PurgeDLRange (UInt_t base, Int_t size) const
 External object is a fake. More...
 

Protected Attributes

Bool_t fMultiColor
 
- Protected Attributes inherited from TGLLogicalShape
UInt_t fRef
 
TGLPhysicalShapefFirstPhysical
 physical instance ref counting More...
 
TObjectfExternalObj
 first replica More...
 
TGLBoundingBox fBoundingBox
 Also plays the role of ID. More...
 
TGLScenefScene
 Shape's bounding box. More...
 
UInt_t fDLBase
 scene where object is stored (can be zero!) More...
 
Int_t fDLSize
 display-list id base More...
 
UShort_t fDLValid
 display-list size for different LODs More...
 
Bool_t fDLCache
 display-list validity bit-field More...
 
Bool_t fRefStrong
 use display list caching More...
 
Bool_t fOwnExtObj
 Strong ref (delete on 0 ref); not in scene. More...
 

Static Private Member Functions

static TClassSearchGLRenderer (TClass *cls)
 Recursively search cls and its base classes for a GL-renderer class. More...
 

Static Private Attributes

static TMap fgGLClassMap
 

Additional Inherited Members

- Public Types inherited from TGLLogicalShape
enum  ELODAxes {
  kLODAxesNone = 0, kLODAxesX = 1 << 0, kLODAxesY = 1 << 1, kLODAxesZ = 1 << 2,
  kLODAxesAll = kLODAxesX | kLODAxesY | kLODAxesZ
}
 
- Static Protected Attributes inherited from TGLLogicalShape
static Bool_t fgIgnoreSizeForCameraInterest = kFALSE
 

#include <TGLObject.h>

+ Inheritance diagram for TGLObject:
+ Collaboration diagram for TGLObject:

Constructor & Destructor Documentation

TGLObject::TGLObject ( )
inline

Definition at line 53 of file TGLObject.h.

virtual TGLObject::~TGLObject ( )
inlinevirtual

Definition at line 54 of file TGLObject.h.

Member Function Documentation

TGLObject::ClassDef ( TGLObject  ,
 
)
template<class TT >
TT* TGLObject::DynCast ( TObject obj)
inlineprotected

Definition at line 45 of file TGLObject.h.

TClass * TGLObject::GetGLRenderer ( TClass isa)
static

Return direct-rendering GL class for class isa.

Zero is a valid response.

Definition at line 135 of file TGLObject.cxx.

Referenced by TGLScenePad::AttemptDirectRenderer(), and TGLScene::FindLogicalSmartRefresh().

virtual Bool_t TGLObject::KeepDuringSmartRefresh ( ) const
inlinevirtual

Reimplemented from TGLLogicalShape.

Reimplemented in TGLPlot3D, TF2GL, TGLParametricEquationGL, and TEvePlot3DGL.

Definition at line 62 of file TGLObject.h.

TClass * TGLObject::SearchGLRenderer ( TClass cls)
staticprivate

Recursively search cls and its base classes for a GL-renderer class.

Definition at line 108 of file TGLObject.cxx.

Referenced by GetGLRenderer().

void TGLObject::SetAxisAlignedBBox ( Float_t  xmin,
Float_t  xmax,
Float_t  ymin,
Float_t  ymax,
Float_t  zmin,
Float_t  zmax 
)
protected
void TGLObject::SetAxisAlignedBBox ( const Float_t p)
protected

Set axis-aligned bounding-box.

Protected helper for subclasses.

Definition at line 98 of file TGLObject.cxx.

virtual void TGLObject::SetBBox ( )
pure virtual
virtual Bool_t TGLObject::SetModel ( TObject obj,
const Option_t opt = 0 
)
pure virtual
Bool_t TGLObject::SetModelCheckClass ( TObject obj,
TClass cls 
)
protected

Checks if obj is of proper class and sets the model.

Protected helper for subclasses. Most sub-classes use exception-throwing SetModelDynCast() instead.

Definition at line 71 of file TGLObject.cxx.

Referenced by TPointSet3DGL::SetModel().

template<class TT >
TT* TGLObject::SetModelDynCast ( TObject obj)
inlineprotected

Definition at line 37 of file TGLObject.h.

Bool_t TGLObject::ShouldDLCache ( const TGLRnrCtx rnrCtx) const
virtual

Decide if display-list should be used for this pass rendering, as determined by rnrCtx.

Reimplemented from TGLLogicalShape.

Reimplemented in TEveCalo3DGL, TEveStraightLineSetGL, TEveBoxSetGL, and TPointSet3DGL.

Definition at line 41 of file TGLObject.cxx.

Referenced by TPointSet3DGL::ShouldDLCache(), TEveBoxSetGL::ShouldDLCache(), TEveStraightLineSetGL::ShouldDLCache(), and TEveCalo3DGL::ShouldDLCache().

void TGLObject::UpdateBoundingBox ( )
virtual

Update bounding box from external source.

We call abstract SetBBox() and propagate the change to all attached physicals.

Reimplemented from TGLLogicalShape.

Definition at line 60 of file TGLObject.cxx.

Member Data Documentation

TMap TGLObject::fgGLClassMap
staticprivate

Definition at line 24 of file TGLObject.h.

Referenced by GetGLRenderer().

Bool_t TGLObject::fMultiColor
mutableprotected

The documentation for this class was generated from the following files: