21 #ifndef Tulip_GLCPULODCALCULATOR_H
22 #define Tulip_GLCPULODCALCULATOR_H
26 #include <tulip/Coord.h>
27 #include <tulip/GlLODCalculator.h>
28 #include <tulip/Matrix.h>
42 class TLP_GL_SCOPE GlCPULODCalculator :
public GlLODCalculator {
46 ~GlCPULODCalculator()
override;
47 GlLODCalculator *clone()
override {
48 GlCPULODCalculator *calculator =
new GlCPULODCalculator();
49 calculator->setComputeOutScreenLOD(computeOutScreenLOD);
56 void beginNewCamera(Camera *camera)
override;
60 void addSimpleEntityBoundingBox(GlSimpleEntity *entity,
const BoundingBox &bb)
override;
64 void addNodeBoundingBox(
unsigned int id,
unsigned int pos,
const BoundingBox &bb)
override;
68 void addEdgeBoundingBox(
unsigned int id,
unsigned int pos,
const BoundingBox &bb)
override;
74 void reserveMemoryForGraphElts(
unsigned int nbNodes,
unsigned int nbEdges)
override;
86 void compute(
const Vector<int, 4> &globalViewport,
87 const Vector<int, 4> ¤tViewport)
override;
92 BoundingBox getSceneBoundingBox()
override;
98 inline void setComputeEdgesLOD(
bool state) {
99 computeEdgesLOD = state;
105 inline void setComputeOutScreenLOD(
bool state) {
106 computeOutScreenLOD = state;
110 virtual void computeFor3DCamera(LayerLODUnit *layerLODUnit,
const Coord &eye,
111 const Matrix<float, 4> &transformMatrix,
112 const Vector<int, 4> &globalViewport,
113 const Vector<int, 4> ¤tViewport);
115 virtual void computeFor2DCamera(LayerLODUnit *layerLODUnit,
const Vector<int, 4> &globalViewport,
116 const Vector<int, 4> ¤tViewport);
118 bool computeEdgesLOD;
119 bool computeOutScreenLOD;
121 std::vector<bool> noBBCheck;
122 std::vector<BoundingBox> bbs;
124 LayerLODUnit *currentLayerLODUnit;