Skip to content
Snippets Groups Projects
  • Rene Brun's avatar
    5b2d3af4
    From Matevz: · 5b2d3af4
    Rene Brun authored
    Major restructuring of GL viewer-scene relationship (Matevz)
    ===================================================
    
    The main idea was to generalize current GL infrustructure so that the
    following features can be done in the future:
    
    1. Full pad rendering via GL including 3D histo/func painters and 2D graphics.
    
    2. Implementation of GL canvas (with independent viewers serving as pads).
    
    3. Multi-view event-visualization front-end.
    
    4. Inclusion of external scenes (non-ROOT-gl) in ROOT viewer.
       Rendering of ROOT scenes in external GL frameworks.
    
    
    Changes on the code level
    -------------------------
    
    0. Extend current scene/viewer classes into a 2-level class hierarchy.
       New classes TGLViewerBase and TGLSceneBase.
    
    1. Allow scenes to be shared among viewers. View-specific scene-cache
       needs to be kept at the viewer side.
    
    2. Viewer now manages a list of scenes. It is possible to put together
       a combination of scenes (e.g. one showing geometry, another one tracks
       and yet another clusters). Each scene can define its own clipping object.
    
    3. Provide API for fine-grained control over rendered object removal,
       creation and update. This allows for efficient scene-updates.
    
    4. Disentangle selection, clipping and other markup objects from
       within viewer-scene singleton.
       New classes TGLClipSet, TGLManipSet.
    
    6. Disentangle selection management.
    
    7. Separate overlay rendering to allow any number of active GL-GUI
       elements (like manipulators are now).
       New classes TGLOverlayElement.
    
    8. Trailing white space has been removed in all files.
    
    
    Restructure low-level interface to OpenGL (Timur)
    =========================================
    
    1. Allow sharing GL resources among viewers.
    
    2. Do not bind GL-output (windowed or offscreen) to ROOT GUI.
    
    New classes TGLContext, TGLFormat, TGLWidget.
    
    This oboletes TGLKernel and TVirtualGL classes.
    
    
    git-svn-id: http://root.cern.ch/svn/root/trunk@19000 27541ba8-7e3a-0410-8455-c3a389f83636
    5b2d3af4
    History
    From Matevz:
    Rene Brun authored
    Major restructuring of GL viewer-scene relationship (Matevz)
    ===================================================
    
    The main idea was to generalize current GL infrustructure so that the
    following features can be done in the future:
    
    1. Full pad rendering via GL including 3D histo/func painters and 2D graphics.
    
    2. Implementation of GL canvas (with independent viewers serving as pads).
    
    3. Multi-view event-visualization front-end.
    
    4. Inclusion of external scenes (non-ROOT-gl) in ROOT viewer.
       Rendering of ROOT scenes in external GL frameworks.
    
    
    Changes on the code level
    -------------------------
    
    0. Extend current scene/viewer classes into a 2-level class hierarchy.
       New classes TGLViewerBase and TGLSceneBase.
    
    1. Allow scenes to be shared among viewers. View-specific scene-cache
       needs to be kept at the viewer side.
    
    2. Viewer now manages a list of scenes. It is possible to put together
       a combination of scenes (e.g. one showing geometry, another one tracks
       and yet another clusters). Each scene can define its own clipping object.
    
    3. Provide API for fine-grained control over rendered object removal,
       creation and update. This allows for efficient scene-updates.
    
    4. Disentangle selection, clipping and other markup objects from
       within viewer-scene singleton.
       New classes TGLClipSet, TGLManipSet.
    
    6. Disentangle selection management.
    
    7. Separate overlay rendering to allow any number of active GL-GUI
       elements (like manipulators are now).
       New classes TGLOverlayElement.
    
    8. Trailing white space has been removed in all files.
    
    
    Restructure low-level interface to OpenGL (Timur)
    =========================================
    
    1. Allow sharing GL resources among viewers.
    
    2. Do not bind GL-output (windowed or offscreen) to ROOT GUI.
    
    New classes TGLContext, TGLFormat, TGLWidget.
    
    This oboletes TGLKernel and TVirtualGL classes.
    
    
    git-svn-id: http://root.cern.ch/svn/root/trunk@19000 27541ba8-7e3a-0410-8455-c3a389f83636