Logo ROOT  
Reference Guide
TGLSceneBase Class Referenceabstract

Scene base-class – provides basic interface expected by the TGLViewer or its sub-classes:

  • unique scene id
  • scene locking
  • overall bounding box
  • list of viewers displaying the scene (for update propagation)
  • virtual interface for draw/select/render (?)

The standard ROOT OpenGL scene is implemented in direct sub-class TGLScene.

Note that while each scene can be shared among several viewers, ALL of them are obliged to share the same display-list space (this can be achieved on GL-context creation time; Matevz believes that by default all GL contexts must use shared display-lists etc).

Definition at line 32 of file TGLSceneBase.h.

Public Member Functions

 TGLSceneBase ()
 
virtual ~TGLSceneBase ()
 Destructor. More...
 
void AddViewer (TGLViewerBase *viewer)
 Add viewer to the list. More...
 
const TGLBoundingBoxBoundingBox () const
 
virtual void CalcBoundingBox () const =0
 
TGLClipClip () const
 
virtual TGLSceneInfoCreateSceneInfo (TGLViewerBase *view)
 Create a scene-info instance appropriate for this scene class. More...
 
virtual TGLLogicalShapeFindLogical (TObject *) const
 
Bool_t GetAutoDestruct () const
 
UInt_t GetMinorStamp () const
 
virtual const char * GetName () const
 
Bool_t GetSelectable () const
 
UInt_t GetTimeStamp () const
 
virtual const char * GetTitle () const
 
void IncMinorStamp ()
 
void IncTimeStamp ()
 
void InvalidateBoundingBox ()
 
virtual const char * LockIdStr () const
 Name printed on locking info messages. More...
 
Short_t LOD () const
 
virtual void LodifySceneInfo (TGLRnrCtx &ctx)
 Setup LOD-dependant values in scene-info. More...
 
virtual void PostDraw (TGLRnrCtx &rnrCtx)
 Finalize drawing. More...
 
virtual void PostRender (TGLRnrCtx &rnrCtx)
 Perform post-render clean-up. More...
 
virtual void PreDraw (TGLRnrCtx &rnrCtx)
 Perform basic pre-render initialization: More...
 
virtual void PreRender (TGLRnrCtx &rnrCtx)
 Perform pre-render initialization - fill rnrCtx with values stored during PreDraw(). More...
 
virtual void RebuildSceneInfo (TGLRnrCtx &ctx)
 Fill scene-info with very basic information that is practically view independent. More...
 
void RemoveViewer (TGLViewerBase *viewer)
 Remove viewer from the list. More...
 
virtual void Render (TGLRnrCtx &rnrCtx)
 This function does rendering of all stages, the shapes are rendered in the following order: opaque, transparent, selected-opaque, selected-transparent. More...
 
virtual void RenderOpaque (TGLRnrCtx &rnrCtx)
 Render opaque elements. More...
 
virtual void RenderSelOpaque (TGLRnrCtx &rnrCtx)
 Render selected opaque elements. More...
 
virtual void RenderSelOpaqueForHighlight (TGLRnrCtx &rnrCtx)
 Render selected opaque elements for highlight. More...
 
virtual void RenderSelTransp (TGLRnrCtx &rnrCtx)
 Render selected transparent elements for highlight. More...
 
virtual void RenderSelTranspForHighlight (TGLRnrCtx &rnrCtx)
 Render selected transparent elements. More...
 
virtual void RenderTransp (TGLRnrCtx &rnrCtx)
 Render transparent elements. More...
 
virtual Bool_t ResolveSelectRecord (TGLSelectRecord &rec, Int_t curIdx)
 Process selection record rec. More...
 
void SetAutoDestruct (Bool_t a)
 
void SetClip (TGLClip *p)
 
void SetLOD (Short_t lod)
 
virtual void SetName (const char *name)
 
virtual void SetNameTitle (const char *name, const char *title)
 
void SetSelectable (Bool_t a)
 
void SetStyle (Short_t st)
 
virtual void SetTitle (const char *title)
 
Short_t Style () const
 
void TagViewersChanged ()
 Tag all viewers as changed. More...
 
virtual void UpdateSceneInfo (TGLRnrCtx &ctx)
 Fill scene-info with information needed for rendering, take into account the render-context (viewer state, camera, clipping). More...
 
- Public Member Functions inherited from TGLLockable
 TGLLockable ()
 
virtual ~TGLLockable ()
 
ELock CurrentLock () const
 
Bool_t IsDrawOrSelectLock () const
 
Bool_t IsLocked () const
 
virtual const char * LockIdStr () const
 
Bool_t ReleaseLock (ELock lock) const
 Release current lock, make sure it the same as the 'lock' argument. More...
 
Bool_t TakeLock (ELock lock) const
 Lock the object in mode 'lock'. More...
 

Protected Types

typedef std::list< TGLViewerBase * >::iterator ViewerList_i
 
typedef std::list< TGLViewerBase * > ViewerList_t
 

Protected Attributes

Bool_t fAutoDestruct
 
TGLBoundingBox fBoundingBox
 
Bool_t fBoundingBoxValid
 
TGLClipfClip
 
Bool_t fDoClipCheck
 
Bool_t fDoFrustumCheck
 
Short_t fLOD
 
UInt_t fMinorStamp
 
TString fName
 
Float_t fOLLineW
 
UInt_t fSceneID
 
Bool_t fSelectable
 
Short_t fStyle
 
UInt_t fTimeStamp
 
TString fTitle
 
ViewerList_t fViewers
 
Float_t fWFLineW
 
- Protected Attributes inherited from TGLLockable
ELock fLock
 

Private Member Functions

 TGLSceneBase (const TGLSceneBase &)
 
TGLSceneBaseoperator= (const TGLSceneBase &)
 

Static Private Attributes

static UInt_t fgSceneIDSrc = 1
 

Additional Inherited Members

- Public Types inherited from TGLLockable
enum  ELock { kUnlocked , kDrawLock , kSelectLock , kModifyLock }
 
- Static Public Member Functions inherited from TGLLockable
static const char * LockName (ELock lock)
 Return name-string for given lock-type. More...
 
static Bool_t LockValid (ELock lock)
 Test if lock is a valid type to take/release. More...
 

#include <TGLSceneBase.h>

Inheritance diagram for TGLSceneBase:
[legend]

Member Typedef Documentation

◆ ViewerList_i

typedef std::list<TGLViewerBase*>::iterator TGLSceneBase::ViewerList_i
protected

Definition at line 63 of file TGLSceneBase.h.

◆ ViewerList_t

typedef std::list<TGLViewerBase*> TGLSceneBase::ViewerList_t
protected

Definition at line 62 of file TGLSceneBase.h.

Constructor & Destructor Documentation

◆ TGLSceneBase() [1/2]

TGLSceneBase::TGLSceneBase ( const TGLSceneBase )
private

◆ TGLSceneBase() [2/2]

TGLSceneBase::TGLSceneBase ( )

Definition at line 49 of file TGLSceneBase.cxx.

◆ ~TGLSceneBase()

TGLSceneBase::~TGLSceneBase ( )
virtual

Destructor.

Definition at line 75 of file TGLSceneBase.cxx.

Member Function Documentation

◆ AddViewer()

void TGLSceneBase::AddViewer ( TGLViewerBase viewer)

Add viewer to the list.

Definition at line 86 of file TGLSceneBase.cxx.

◆ BoundingBox()

const TGLBoundingBox & TGLSceneBase::BoundingBox ( ) const
inline

Definition at line 138 of file TGLSceneBase.h.

◆ CalcBoundingBox()

virtual void TGLSceneBase::CalcBoundingBox ( ) const
pure virtual

Implemented in TGLScene.

◆ Clip()

TGLClip * TGLSceneBase::Clip ( ) const
inline

Definition at line 125 of file TGLSceneBase.h.

◆ CreateSceneInfo()

TGLSceneInfo * TGLSceneBase::CreateSceneInfo ( TGLViewerBase view)
virtual

Create a scene-info instance appropriate for this scene class.

Here we instantiate the scene-info base-class TGLSceneInfo.

Reimplemented in TGLScene.

Definition at line 144 of file TGLSceneBase.cxx.

◆ FindLogical()

virtual TGLLogicalShape * TGLSceneBase::FindLogical ( TObject ) const
inlinevirtual

Reimplemented in TGLScene.

Definition at line 105 of file TGLSceneBase.h.

◆ GetAutoDestruct()

Bool_t TGLSceneBase::GetAutoDestruct ( ) const
inline

Definition at line 131 of file TGLSceneBase.h.

◆ GetMinorStamp()

UInt_t TGLSceneBase::GetMinorStamp ( ) const
inline

Definition at line 116 of file TGLSceneBase.h.

◆ GetName()

virtual const char * TGLSceneBase::GetName ( ) const
inlinevirtual

Definition at line 81 of file TGLSceneBase.h.

◆ GetSelectable()

Bool_t TGLSceneBase::GetSelectable ( ) const
inline

Definition at line 128 of file TGLSceneBase.h.

◆ GetTimeStamp()

UInt_t TGLSceneBase::GetTimeStamp ( ) const
inline

Definition at line 113 of file TGLSceneBase.h.

◆ GetTitle()

virtual const char * TGLSceneBase::GetTitle ( ) const
inlinevirtual

Definition at line 82 of file TGLSceneBase.h.

◆ IncMinorStamp()

void TGLSceneBase::IncMinorStamp ( )
inline

Definition at line 117 of file TGLSceneBase.h.

◆ IncTimeStamp()

void TGLSceneBase::IncTimeStamp ( )
inline

Definition at line 114 of file TGLSceneBase.h.

◆ InvalidateBoundingBox()

void TGLSceneBase::InvalidateBoundingBox ( )
inline

Definition at line 137 of file TGLSceneBase.h.

◆ LockIdStr()

const char * TGLSceneBase::LockIdStr ( ) const
virtual

Name printed on locking info messages.

Reimplemented from TGLLockable.

Definition at line 131 of file TGLSceneBase.cxx.

◆ LOD()

Short_t TGLSceneBase::LOD ( ) const
inline

Definition at line 119 of file TGLSceneBase.h.

◆ LodifySceneInfo()

void TGLSceneBase::LodifySceneInfo ( TGLRnrCtx ctx)
virtual

Setup LOD-dependant values in scene-info.

Nothing to be done here but to store the last LOD.

Reimplemented in TGLScene.

Definition at line 286 of file TGLSceneBase.cxx.

◆ operator=()

TGLSceneBase & TGLSceneBase::operator= ( const TGLSceneBase )
private

◆ PostDraw()

void TGLSceneBase::PostDraw ( TGLRnrCtx rnrCtx)
virtual

Finalize drawing.

This is called at the end of the GL-viewer draw cycle.

Reimplemented in TGLScene.

Definition at line 496 of file TGLSceneBase.cxx.

◆ PostRender()

void TGLSceneBase::PostRender ( TGLRnrCtx rnrCtx)
virtual

Perform post-render clean-up.

Definition at line 483 of file TGLSceneBase.cxx.

◆ PreDraw()

void TGLSceneBase::PreDraw ( TGLRnrCtx rnrCtx)
virtual

Perform basic pre-render initialization:

  • calculate LOD, Style, Clipping,
  • build draw lists.

This is called in the beginning of the GL-viewer draw cycle.

Reimplemented in TGLScene.

Definition at line 311 of file TGLSceneBase.cxx.

◆ PreRender()

void TGLSceneBase::PreRender ( TGLRnrCtx rnrCtx)
virtual

Perform pre-render initialization - fill rnrCtx with values stored during PreDraw().

This is called each time before RenderXyzz().

Definition at line 402 of file TGLSceneBase.cxx.

◆ RebuildSceneInfo()

void TGLSceneBase::RebuildSceneInfo ( TGLRnrCtx ctx)
virtual

Fill scene-info with very basic information that is practically view independent.

This is called when scene content is changed or when camera-interest changes.

Reimplemented in TGLScene.

Definition at line 154 of file TGLSceneBase.cxx.

◆ RemoveViewer()

void TGLSceneBase::RemoveViewer ( TGLViewerBase viewer)

Remove viewer from the list.

If auto-destruct is on and the last viewer is removed the scene destructs itself.

Definition at line 100 of file TGLSceneBase.cxx.

◆ Render()

void TGLSceneBase::Render ( TGLRnrCtx rnrCtx)
virtual

This function does rendering of all stages, the shapes are rendered in the following order: opaque, transparent, selected-opaque, selected-transparent.

GL-depth buffer is cleared after transparent shapes have been rendered.

This is never called from ROOT GL directly. Use it if you know you are rendering a single scene.

Definition at line 430 of file TGLSceneBase.cxx.

◆ RenderOpaque()

void TGLSceneBase::RenderOpaque ( TGLRnrCtx rnrCtx)
virtual

Render opaque elements.

Reimplemented in TGLScene.

Definition at line 441 of file TGLSceneBase.cxx.

◆ RenderSelOpaque()

void TGLSceneBase::RenderSelOpaque ( TGLRnrCtx rnrCtx)
virtual

Render selected opaque elements.

Reimplemented in TGLScene.

Definition at line 455 of file TGLSceneBase.cxx.

◆ RenderSelOpaqueForHighlight()

void TGLSceneBase::RenderSelOpaqueForHighlight ( TGLRnrCtx rnrCtx)
virtual

Render selected opaque elements for highlight.

Reimplemented in TGLScene.

Definition at line 469 of file TGLSceneBase.cxx.

◆ RenderSelTransp()

void TGLSceneBase::RenderSelTransp ( TGLRnrCtx rnrCtx)
virtual

Render selected transparent elements for highlight.

Reimplemented in TGLScene.

Definition at line 462 of file TGLSceneBase.cxx.

◆ RenderSelTranspForHighlight()

void TGLSceneBase::RenderSelTranspForHighlight ( TGLRnrCtx rnrCtx)
virtual

Render selected transparent elements.

Reimplemented in TGLScene.

Definition at line 476 of file TGLSceneBase.cxx.

◆ RenderTransp()

void TGLSceneBase::RenderTransp ( TGLRnrCtx rnrCtx)
virtual

Render transparent elements.

Reimplemented in TGLScene.

Definition at line 448 of file TGLSceneBase.cxx.

◆ ResolveSelectRecord()

Bool_t TGLSceneBase::ResolveSelectRecord ( TGLSelectRecord rec,
Int_t  curIdx 
)
virtual

Process selection record rec.

'curIdx' is the item position where the scene should start its processing. Return TRUE if an object has been identified or FALSE otherwise. The scene-info member of the record is already set by the caller.

See implementation in sub-class TGLScene, here we just return FALSE.

Reimplemented in TGLScene.

Definition at line 513 of file TGLSceneBase.cxx.

◆ SetAutoDestruct()

void TGLSceneBase::SetAutoDestruct ( Bool_t  a)
inline

Definition at line 132 of file TGLSceneBase.h.

◆ SetClip()

void TGLSceneBase::SetClip ( TGLClip p)
inline

Definition at line 126 of file TGLSceneBase.h.

◆ SetLOD()

void TGLSceneBase::SetLOD ( Short_t  lod)
inline

Definition at line 120 of file TGLSceneBase.h.

◆ SetName()

virtual void TGLSceneBase::SetName ( const char *  name)
inlinevirtual

Definition at line 83 of file TGLSceneBase.h.

◆ SetNameTitle()

virtual void TGLSceneBase::SetNameTitle ( const char *  name,
const char *  title 
)
inlinevirtual

Definition at line 85 of file TGLSceneBase.h.

◆ SetSelectable()

void TGLSceneBase::SetSelectable ( Bool_t  a)
inline

Definition at line 129 of file TGLSceneBase.h.

◆ SetStyle()

void TGLSceneBase::SetStyle ( Short_t  st)
inline

Definition at line 123 of file TGLSceneBase.h.

◆ SetTitle()

virtual void TGLSceneBase::SetTitle ( const char *  title)
inlinevirtual

Definition at line 84 of file TGLSceneBase.h.

◆ Style()

Short_t TGLSceneBase::Style ( ) const
inline

Definition at line 122 of file TGLSceneBase.h.

◆ TagViewersChanged()

void TGLSceneBase::TagViewersChanged ( )

Tag all viewers as changed.

Definition at line 118 of file TGLSceneBase.cxx.

◆ UpdateSceneInfo()

void TGLSceneBase::UpdateSceneInfo ( TGLRnrCtx ctx)
virtual

Fill scene-info with information needed for rendering, take into account the render-context (viewer state, camera, clipping).

Usually called from TGLViewer before rendering a scene if some moderately significant part of render-context has changed.

Here we update the basic state (clear last-LOD, mark the time, set global <-> scene transformation matrices) and potentially study and refine the clipping planes based on scene bounding box.

Reimplemented in TGLScene.

Definition at line 172 of file TGLSceneBase.cxx.

Member Data Documentation

◆ fAutoDestruct

Bool_t TGLSceneBase::fAutoDestruct
protected

Definition at line 66 of file TGLSceneBase.h.

◆ fBoundingBox

TGLBoundingBox TGLSceneBase::fBoundingBox
mutableprotected

Definition at line 55 of file TGLSceneBase.h.

◆ fBoundingBoxValid

Bool_t TGLSceneBase::fBoundingBoxValid
mutableprotected

Definition at line 56 of file TGLSceneBase.h.

◆ fClip

TGLClip* TGLSceneBase::fClip
protected

Definition at line 51 of file TGLSceneBase.h.

◆ fDoClipCheck

Bool_t TGLSceneBase::fDoClipCheck
protected

Definition at line 59 of file TGLSceneBase.h.

◆ fDoFrustumCheck

Bool_t TGLSceneBase::fDoFrustumCheck
protected

Definition at line 58 of file TGLSceneBase.h.

◆ fgSceneIDSrc

UInt_t TGLSceneBase::fgSceneIDSrc = 1
staticprivate

Definition at line 38 of file TGLSceneBase.h.

◆ fLOD

Short_t TGLSceneBase::fLOD
protected

Definition at line 47 of file TGLSceneBase.h.

◆ fMinorStamp

UInt_t TGLSceneBase::fMinorStamp
protected

Definition at line 46 of file TGLSceneBase.h.

◆ fName

TString TGLSceneBase::fName
protected

Definition at line 42 of file TGLSceneBase.h.

◆ fOLLineW

Float_t TGLSceneBase::fOLLineW
protected

Definition at line 50 of file TGLSceneBase.h.

◆ fSceneID

UInt_t TGLSceneBase::fSceneID
protected

Definition at line 41 of file TGLSceneBase.h.

◆ fSelectable

Bool_t TGLSceneBase::fSelectable
protected

Definition at line 52 of file TGLSceneBase.h.

◆ fStyle

Short_t TGLSceneBase::fStyle
protected

Definition at line 48 of file TGLSceneBase.h.

◆ fTimeStamp

UInt_t TGLSceneBase::fTimeStamp
protected

Definition at line 45 of file TGLSceneBase.h.

◆ fTitle

TString TGLSceneBase::fTitle
protected

Definition at line 43 of file TGLSceneBase.h.

◆ fViewers

ViewerList_t TGLSceneBase::fViewers
protected

Definition at line 65 of file TGLSceneBase.h.

◆ fWFLineW

Float_t TGLSceneBase::fWFLineW
protected

Definition at line 49 of file TGLSceneBase.h.

Libraries for TGLSceneBase:
[legend]

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