VTK
vtkCompositePolyDataMapper2Internal.h
Go to the documentation of this file.
1 // this class encapsulates values tied to a
2 // polydata
4 {
5 public:
7  unsigned int FlatIndex;
8  double Opacity;
9  bool Visibility;
14 
15  bool Marked;
16 
17  unsigned int StartVertex;
18  unsigned int NextVertex;
19 
20  // point line poly strip edge stripedge
23 
24  // Point Line Poly Strip end
25  size_t PrimOffsets[5];
26 
27  bool Different(
29  vtkHardwareSelector *selector,
30  int primType)
31  {
32  return
33  (selector &&
34  selector->GetCurrentPass() ==
36  this->Opacity != next->Opacity ||
37  this->Visibility != next->Visibility ||
38  this->Pickability != next->Pickability ||
39  this->OverridesColor != next->OverridesColor ||
40  this->AmbientColor != next->AmbientColor ||
41  this->DiffuseColor != next->DiffuseColor ||
42  (primType >= 0 && primType <= 3 &&
43  this->PrimOffsets[primType+1] != next->PrimOffsets[primType]);
44  }
45 
46 };
47 
48 //===================================================================
49 // We define a helper class that is a subclass of vtkOpenGLPolyDataMapper
50 class VTKRENDERINGOPENGL2_EXPORT vtkCompositeMapperHelper2 : public vtkOpenGLPolyDataMapper
51 {
52 public:
55 
57  this->Parent = p; }
58 
59  vtkCompositeMapperHelperData *AddData(vtkPolyData *pd, unsigned int flatIndex);
60 
61  // Description:
62  // Implemented by sub classes. Actual rendering is done here.
63  void RenderPiece(vtkRenderer *ren, vtkActor *act) override;
64 
65  // keep track of what data is being used as the multiblock
66  // can change
67  void ClearMark();
68  void RemoveUnused();
69  bool GetMarked() { return this->Marked; }
70  void SetMarked(bool v) { this->Marked = v; }
71 
75  std::vector<vtkPolyData*> GetRenderedList(){ return this->RenderedList; }
76 
77 protected:
79  std::map<vtkPolyData *, vtkCompositeMapperHelperData *> Data;
80 
81  bool Marked;
82 
84  {
85  this->Parent = nullptr;
86  };
87  ~vtkCompositeMapperHelper2() override;
88 
89  void DrawIBO(
90  vtkRenderer* ren, vtkActor *actor,
91  int primType,
92  vtkOpenGLHelper &CellBO,
93  GLenum mode,
94  int pointSize);
95 
96  void SetShaderValues(
97  vtkShaderProgram *prog,
99  size_t primOffset);
100 
101  // Description:
102  // Perform string replacments on the shader templates, called from
103  // ReplaceShaderValues
104  void ReplaceShaderColor(
105  std::map<vtkShader::Type, vtkShader *> shaders,
106  vtkRenderer *ren, vtkActor *act) override;
107 
108  // Description:
109  // Determine if the buffer objects need to be rebuilt
110  bool GetNeedToRebuildBufferObjects(vtkRenderer *ren, vtkActor *act) override;
111 
112  // Description:
113  // Build the VBO/IBO, called by UpdateBufferObjects
114  void BuildBufferObjects(vtkRenderer *ren, vtkActor *act) override;
115  virtual void AppendOneBufferObject(vtkRenderer *ren,
117  unsigned int &flat_index,
118  std::vector<unsigned char> &colors,
119  std::vector<float> &norms);
120 
121  // Description:
122  // Returns if we can use texture maps for scalar coloring. Note this doesn't
123  // say we "will" use scalar coloring. It says, if we do use scalar coloring,
124  // we will use a texture. Always off for this mapper.
126 
127  std::vector<unsigned int> VertexOffsets;
128 
129  // vert line poly strip edge stripedge
130  std::vector<unsigned int> IndexArray[PrimitiveEnd];
131 
132  void RenderPieceDraw(vtkRenderer *ren, vtkActor *act) override;
133 
136 
140 
141  std::vector<vtkPolyData*> RenderedList;
142 
143 private:
145  void operator=(const vtkCompositeMapperHelper2&) = delete;
146 };
147 // VTK-HeaderTest-Exclude: vtkCompositePolyDataMapper2Internal.h
virtual void RenderPieceDraw(vtkRenderer *ren, vtkActor *act)
Implemented by sub classes.
a PolyDataMapper for the OpenGL library
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
static vtkOpenGLPolyDataMapper * New()
virtual void ReplaceShaderColor(std::map< vtkShader::Type, vtkShader *> shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacments on the shader templates, called from ReplaceShaderValues.
mapper for composite dataset consisting of polygonal data.
abstract specification for renderers
Definition: vtkRenderer.h:63
std::map< vtkPolyData *, vtkCompositeMapperHelperData * > Data
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
virtual int CanUseTextureMapForColoring(vtkDataObject *input)
Returns if we can use texture maps for scalar coloring.
virtual bool GetNeedToRebuildBufferObjects(vtkRenderer *ren, vtkActor *act)
Does the VBO/IBO need to be rebuilt.
std::vector< vtkPolyData * > GetRenderedList()
Accessor to the ordered list of PolyData that we last drew.
virtual int GetCurrentPass()
Get the current pass number.
void RenderPiece(vtkRenderer *ren, vtkActor *a) override
Implement superclass render method.
virtual void BuildBufferObjects(vtkRenderer *ren, vtkActor *act)
Build the VBO/IBO, called by UpdateBufferObjects.
manager for OpenGL-based selection.
general representation of visualization data
Definition: vtkDataObject.h:64
bool Different(vtkCompositeMapperHelperData *next, vtkHardwareSelector *selector, int primType)
void SetParent(vtkCompositePolyDataMapper2 *p)
unsigned int StartIndex[vtkOpenGLPolyDataMapper::PrimitiveEnd]
The ShaderProgram uses one or more Shader objects.
unsigned int NextIndex[vtkOpenGLPolyDataMapper::PrimitiveEnd]