Open CASCADE Technology
7.3.0
|
Class defining the list of layers. More...
#include <OpenGl_LayerList.hxx>
Data Structures | |
class | OpenGl_LayerStack |
Stack of references to existing layers of predefined maximum size. More... | |
class | OpenGl_OpaqueFilter |
Filter of TKOpenGl elements for processing only shading geometry and for collecting number of skipped elements to an external counter. More... | |
class | OpenGl_TransparentFilter |
Filter of TKOpenGl elements for keeping only shading geometry with transparency. More... | |
Public Member Functions | |
OpenGl_LayerList (const Standard_Integer theNbPriorities) | |
Constructor. More... | |
virtual | ~OpenGl_LayerList () |
Destructor. More... | |
Standard_Integer | NbPriorities () const |
Method returns the number of available priorities. More... | |
Standard_Integer | NbStructures () const |
Number of displayed structures. More... | |
Standard_Integer | NbImmediateStructures () const |
Return number of structures within immediate layers. More... | |
void | AddLayer (const Graphic3d_ZLayerId theLayerId) |
Insert a new layer with id. More... | |
void | RemoveLayer (const Graphic3d_ZLayerId theLayerId) |
Remove layer by its id. More... | |
void | AddStructure (const OpenGl_Structure *theStruct, const Graphic3d_ZLayerId theLayerId, const Standard_Integer thePriority, Standard_Boolean isForChangePriority=Standard_False) |
Add structure to list with given priority. The structure will be inserted to specified layer. If the layer isn't found, the structure will be put to default bottom-level layer. More... | |
void | RemoveStructure (const OpenGl_Structure *theStructure) |
Remove structure from structure list and return its previous priority. More... | |
void | ChangeLayer (const OpenGl_Structure *theStructure, const Graphic3d_ZLayerId theOldLayerId, const Graphic3d_ZLayerId theNewLayerId) |
Change structure z layer If the new layer is not presented, the structure will be displayed in default z layer. More... | |
void | ChangePriority (const OpenGl_Structure *theStructure, const Graphic3d_ZLayerId theLayerId, const Standard_Integer theNewPriority) |
Changes structure priority within its ZLayer. More... | |
OpenGl_Layer & | Layer (const Graphic3d_ZLayerId theLayerId) |
Returns reference to the layer with given ID. More... | |
const OpenGl_Layer & | Layer (const Graphic3d_ZLayerId theLayerId) const |
Returns reference to the layer with given ID. More... | |
void | SetLayerSettings (const Graphic3d_ZLayerId theLayerId, const Graphic3d_ZLayerSettings &theSettings) |
Assign new settings to the layer. More... | |
void | UpdateCulling (const Handle< OpenGl_Workspace > &theWorkspace, const Standard_Boolean theToDrawImmediate) |
Update culling state - should be called before rendering. More... | |
void | Render (const Handle< OpenGl_Workspace > &theWorkspace, const Standard_Boolean theToDrawImmediate, const OpenGl_LayerFilter theLayersToProcess, OpenGl_FrameBuffer *theReadDrawFbo, OpenGl_FrameBuffer *theOitAccumFbo) const |
Render this element. More... | |
const OpenGl_SequenceOfLayers & | Layers () const |
Returns the set of OpenGL Z-layers. More... | |
const OpenGl_LayerSeqIds & | LayerIDs () const |
Returns the map of Z-layer IDs to indexes. More... | |
void | InvalidateBVHData (const Graphic3d_ZLayerId theLayerId) |
Marks BVH tree for given priority list as dirty and marks primitive set for rebuild. More... | |
Standard_Size | ModificationStateOfRaytracable () const |
Returns structure modification state (for ray-tracing). More... | |
const Handle< Select3D_BVHBuilder3d > & | FrustumCullingBVHBuilder () const |
Returns BVH tree builder for frustom culling. More... | |
void | SetFrustumCullingBVHBuilder (const Handle< Select3D_BVHBuilder3d > &theBuilder) |
Assigns BVH tree builder for frustom culling. More... | |
Protected Member Functions | |
void | renderTransparent (const Handle< OpenGl_Workspace > &theWorkspace, OpenGl_LayerStack::iterator &theLayerIter, const OpenGl_GlobalLayerSettings &theGlobalSettings, OpenGl_FrameBuffer *theReadDrawFbo, OpenGl_FrameBuffer *theOitAccumFbo) const |
Render transparent objects using blending operator. Additional accumulation framebuffer is used for blended order-independent transparency algorithm. It should support floating-point color components and share depth with main reading/drawing framebuffer. More... | |
Protected Attributes | |
OpenGl_SequenceOfLayers | myLayers |
OpenGl_LayerSeqIds | myLayerIds |
Handle< Select3D_BVHBuilder3d > | myBVHBuilder |
BVH tree builder for frustom culling. More... | |
Standard_Integer | myDefaultLayerIndex |
index of Graphic3d_ZLayerId_Default layer in myLayers sequence More... | |
Standard_Integer | myNbPriorities |
Standard_Integer | myNbStructures |
Standard_Integer | myImmediateNbStructures |
number of structures within immediate layers More... | |
Standard_Size | myModifStateOfRaytraceable |
OpenGl_LayerStack | myTransparentToProcess |
Collection of references to layers with transparency gathered during rendering pass. More... | |
Handle< OpenGl_OpaqueFilter > | myRenderOpaqueFilter |
rendering filter for opaque drawing pass (blended OIT). More... | |
Handle< OpenGl_TransparentFilter > | myRenderTranspFilter |
rendering filter for transparency drawing pass (blended OIT). More... | |
Class defining the list of layers.
OpenGl_LayerList::OpenGl_LayerList | ( | const Standard_Integer | theNbPriorities | ) |
Constructor.
|
virtual |
Destructor.
void OpenGl_LayerList::AddLayer | ( | const Graphic3d_ZLayerId | theLayerId | ) |
Insert a new layer with id.
void OpenGl_LayerList::AddStructure | ( | const OpenGl_Structure * | theStruct, |
const Graphic3d_ZLayerId | theLayerId, | ||
const Standard_Integer | thePriority, | ||
Standard_Boolean | isForChangePriority = Standard_False |
||
) |
Add structure to list with given priority. The structure will be inserted to specified layer. If the layer isn't found, the structure will be put to default bottom-level layer.
void OpenGl_LayerList::ChangeLayer | ( | const OpenGl_Structure * | theStructure, |
const Graphic3d_ZLayerId | theOldLayerId, | ||
const Graphic3d_ZLayerId | theNewLayerId | ||
) |
Change structure z layer If the new layer is not presented, the structure will be displayed in default z layer.
void OpenGl_LayerList::ChangePriority | ( | const OpenGl_Structure * | theStructure, |
const Graphic3d_ZLayerId | theLayerId, | ||
const Standard_Integer | theNewPriority | ||
) |
Changes structure priority within its ZLayer.
|
inline |
Returns BVH tree builder for frustom culling.
void OpenGl_LayerList::InvalidateBVHData | ( | const Graphic3d_ZLayerId | theLayerId | ) |
Marks BVH tree for given priority list as dirty and marks primitive set for rebuild.
OpenGl_Layer& OpenGl_LayerList::Layer | ( | const Graphic3d_ZLayerId | theLayerId | ) |
Returns reference to the layer with given ID.
const OpenGl_Layer& OpenGl_LayerList::Layer | ( | const Graphic3d_ZLayerId | theLayerId | ) | const |
Returns reference to the layer with given ID.
|
inline |
Returns the map of Z-layer IDs to indexes.
|
inline |
Returns the set of OpenGL Z-layers.
|
inline |
Returns structure modification state (for ray-tracing).
|
inline |
Return number of structures within immediate layers.
|
inline |
Method returns the number of available priorities.
|
inline |
Number of displayed structures.
void OpenGl_LayerList::RemoveLayer | ( | const Graphic3d_ZLayerId | theLayerId | ) |
Remove layer by its id.
void OpenGl_LayerList::RemoveStructure | ( | const OpenGl_Structure * | theStructure | ) |
Remove structure from structure list and return its previous priority.
void OpenGl_LayerList::Render | ( | const Handle< OpenGl_Workspace > & | theWorkspace, |
const Standard_Boolean | theToDrawImmediate, | ||
const OpenGl_LayerFilter | theLayersToProcess, | ||
OpenGl_FrameBuffer * | theReadDrawFbo, | ||
OpenGl_FrameBuffer * | theOitAccumFbo | ||
) | const |
Render this element.
|
protected |
Render transparent objects using blending operator. Additional accumulation framebuffer is used for blended order-independent transparency algorithm. It should support floating-point color components and share depth with main reading/drawing framebuffer.
theWorkspace | [in] the currently used workspace for rendering. |
theLayerIter | [in/out] the current iterator of transparent layers to process. |
theGlobalSettings | [in] the set of global settings used for rendering. |
theReadDrawFbo | [in] the framebuffer for reading depth and writing final color. |
theOitAccumFbo | [in] the framebuffer for accumulating color and coverage for OIT process. |
void OpenGl_LayerList::SetFrustumCullingBVHBuilder | ( | const Handle< Select3D_BVHBuilder3d > & | theBuilder | ) |
Assigns BVH tree builder for frustom culling.
void OpenGl_LayerList::SetLayerSettings | ( | const Graphic3d_ZLayerId | theLayerId, |
const Graphic3d_ZLayerSettings & | theSettings | ||
) |
Assign new settings to the layer.
void OpenGl_LayerList::UpdateCulling | ( | const Handle< OpenGl_Workspace > & | theWorkspace, |
const Standard_Boolean | theToDrawImmediate | ||
) |
Update culling state - should be called before rendering.
|
protected |
BVH tree builder for frustom culling.
|
protected |
index of Graphic3d_ZLayerId_Default layer in myLayers sequence
|
protected |
number of structures within immediate layers
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
rendering filter for opaque drawing pass (blended OIT).
|
protected |
rendering filter for transparency drawing pass (blended OIT).
|
mutableprotected |
Collection of references to layers with transparency gathered during rendering pass.