ROOT
6.06/09
Reference Guide
|
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 TGLPhysicalShape * | GetFirstPhysical () const |
TObject * | ID () const |
TObject * | GetExternal () const |
TGLScene * | GetScene () const |
const TGLBoundingBox & | BoundingBox () 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 TClass * | GetGLRenderer (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 |
TGLPhysicalShape * | fFirstPhysical |
physical instance ref counting More... | |
TObject * | fExternalObj |
first replica More... | |
TGLBoundingBox | fBoundingBox |
Also plays the role of ID. More... | |
TGLScene * | fScene |
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 TClass * | SearchGLRenderer (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>
|
inline |
Definition at line 53 of file TGLObject.h.
|
inlinevirtual |
Definition at line 54 of file TGLObject.h.
TGLObject::ClassDef | ( | TGLObject | , |
0 | |||
) |
|
inlineprotected |
Definition at line 45 of file TGLObject.h.
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().
|
inlinevirtual |
Reimplemented from TGLLogicalShape.
Reimplemented in TGLPlot3D, TF2GL, TGLParametricEquationGL, and TEvePlot3DGL.
Definition at line 62 of file TGLObject.h.
Recursively search cls and its base classes for a GL-renderer class.
Definition at line 108 of file TGLObject.cxx.
Referenced by GetGLRenderer().
|
protected |
Set axis-aligned bounding-box.
Protected helper for subclasses.
Definition at line 86 of file TGLObject.cxx.
Referenced by SetAxisAlignedBBox(), TPointSet3DGL::SetBBox(), TEveTriangleSetGL::SetBBox(), TEveArrowGL::SetBBox(), TEveStraightLineSetGL::SetBBox(), TEveDigitSetGL::SetBBox(), TEveProjectionAxesGL::SetBBox(), TEveJetConeGL::SetBBox(), TEveBoxGL::SetBBox(), TEvePolygonSetProjectedGL::SetBBox(), TEveCalo3DGL::SetBBox(), TEveCalo2DGL::SetBBox(), TEveJetConeProjectedGL::SetBBox(), TEveBoxProjectedGL::SetBBox(), and TEveCaloLegoGL::SetBBox().
Set axis-aligned bounding-box.
Protected helper for subclasses.
Definition at line 98 of file TGLObject.cxx.
|
pure virtual |
Implemented in TEveCaloLegoGL, TEveBoxProjectedGL, TEveJetConeProjectedGL, TEveCalo2DGL, TEveCalo3DGL, TEvePolygonSetProjectedGL, TEveBoxGL, TEveJetConeGL, TEveProjectionAxesGL, TH3GL, TEvePlot3DGL, TEveDigitSetGL, TH2GL, TEveStraightLineSetGL, TEveTextGL, TF2GL, TGLParametricEquationGL, TEveArrowGL, TEveTriangleSetGL, and TPointSet3DGL.
Referenced by TGLScenePad::AttemptDirectRenderer(), TGLPlot3D::CreatePlot(), and UpdateBoundingBox().
Implemented in TEveCaloLegoGL, TEveBoxProjectedGL, TEveJetConeProjectedGL, TEveCalo2DGL, TEveCalo3DGL, TEvePolygonSetProjectedGL, TEveBoxGL, TEveBoxSetGL, TEveJetConeGL, TEveProjectionAxesGL, TH3GL, TEvePlot3DGL, TEveTrackGL, TEveLineGL, TH2GL, TEveStraightLineSetGL, TEveTextGL, TEveTrackProjectedGL, TF2GL, TGLParametricEquationGL, TEveArrowGL, TEveQuadSetGL, TEveTriangleSetGL, and TPointSet3DGL.
Referenced by TGLScenePad::AttemptDirectRenderer(), and TGLPlot3D::CreatePlot().
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().
|
inlineprotected |
Definition at line 37 of file TGLObject.h.
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().
|
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.
|
staticprivate |
Definition at line 24 of file TGLObject.h.
Referenced by GetGLRenderer().
|
mutableprotected |
Definition at line 28 of file TGLObject.h.
Referenced by TEveBoxGL::DirectDraw(), TEvePolygonSetProjectedGL::DirectDraw(), TEveJetConeProjectedGL::DirectDraw(), TEveBoxProjectedGL::DirectDraw(), ShouldDLCache(), TEveBoxSetGL::TEveBoxSetGL(), TEveCalo2DGL::TEveCalo2DGL(), TEveCalo3DGL::TEveCalo3DGL(), TEveLineGL::TEveLineGL(), TEvePolygonSetProjectedGL::TEvePolygonSetProjectedGL(), TEveQuadSetGL::TEveQuadSetGL(), TEveStraightLineSetGL::TEveStraightLineSetGL(), and TEveTriangleSetGL::TEveTriangleSetGL().