VTK  9.1.0
vtkCompositeMapperHelper2.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4 
5  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6  All rights reserved.
7  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8 
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notice for more information.
12 
13 =========================================================================*/
14 
15 #ifndef vtkCompositeMapperHelper2_h
16 #define vtkCompositeMapperHelper2_h
17 
18 #ifndef __VTK_WRAP__
19 
21 #include "vtkRenderingOpenGL2Module.h" // for export macro
22 
23 class vtkPolyData;
25 
26 // this class encapsulates values tied to a
27 // polydata
29 {
30 public:
32  unsigned int FlatIndex;
33  double Opacity;
34  bool IsOpaque;
35  bool Visibility;
42 
43  bool Marked;
44 
45  unsigned int StartVertex;
46  unsigned int NextVertex;
47 
48  // point line poly strip edge stripedge
51 
52  // stores the mapping from vtk cells to gl_PrimitiveId
54 };
55 
56 //===================================================================
58 class VTKRENDERINGOPENGL2_EXPORT vtkCompositeMapperHelper2 : public vtkOpenGLPolyDataMapper
59 {
60 public:
63  void PrintSelf(ostream& os, vtkIndent indent) override;
64 
65  void SetParent(vtkCompositePolyDataMapper2* p) { this->Parent = p; }
66 
67  vtkCompositeMapperHelperData* AddData(vtkPolyData* pd, unsigned int flatIndex);
68 
72  void RenderPiece(vtkRenderer* ren, vtkActor* act) override;
73 
77  void ClearMark();
78  void RemoveUnused();
79  bool GetMarked() { return this->Marked; }
80  void SetMarked(bool v) { this->Marked = v; }
82 
86  std::vector<vtkPolyData*> GetRenderedList() const;
87 
93  vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
94 
96  vtkCompositeMapperHelperData* hdata, std::vector<unsigned int>& mypixels);
97 
98 protected:
100  std::map<vtkPolyData*, vtkCompositeMapperHelperData*> Data;
101 
102  bool Marked;
103 
105  void UpdateCameraShiftScale(vtkRenderer* ren, vtkActor* actor) override;
106 
107  vtkCompositeMapperHelper2() { this->Parent = nullptr; };
109 
110  void DrawIBO(vtkRenderer* ren, vtkActor* actor, int primType, vtkOpenGLHelper& CellBO,
111  GLenum mode, int pointSize);
112 
113  virtual void SetShaderValues(
114  vtkShaderProgram* prog, vtkCompositeMapperHelperData* hdata, size_t primOffset);
115 
120  void UpdateShaders(vtkOpenGLHelper& cellBO, vtkRenderer* ren, vtkActor* act) override;
121 
127  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
128 
133 
137  void BuildBufferObjects(vtkRenderer* ren, vtkActor* act) override;
138  virtual void AppendOneBufferObject(vtkRenderer* ren, vtkActor* act,
139  vtkCompositeMapperHelperData* hdata, vtkIdType& flat_index, std::vector<unsigned char>& colors,
140  std::vector<float>& norms);
141 
146  vtkPolyData* poly, std::vector<unsigned int> (&indices)[4], vtkIdType offset) override;
147 
154 
155  std::vector<unsigned int> VertexOffsets;
156 
157  // vert line poly strip edge stripedge
158  std::vector<unsigned int> IndexArray[PrimitiveEnd];
159 
160  void RenderPieceDraw(vtkRenderer* ren, vtkActor* act) override;
161 
164 
166 
168  std::vector<std::vector<unsigned int>> PickPixels;
169 
170  std::map<vtkAbstractArray*, vtkDataArray*> ColorArrayMap;
171 
172 private:
174  void operator=(const vtkCompositeMapperHelper2&) = delete;
175 };
176 
177 #endif
178 
179 #endif
vtkCompositeMapperHelperData::NextVertex
unsigned int NextVertex
Definition: vtkCompositeMapperHelper2.h:46
vtkCompositeMapperHelper2::Data
std::map< vtkPolyData *, vtkCompositeMapperHelperData * > Data
Definition: vtkCompositeMapperHelper2.h:100
vtkCompositeMapperHelper2::ClearMark
void ClearMark()
vtkCompositeMapperHelper2::ReplaceShaderColor
void ReplaceShaderColor(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates, called from ReplaceShaderValues.
vtkCompositeMapperHelper2::CanUseTextureMapForColoring
int CanUseTextureMapForColoring(vtkDataObject *) override
Returns if we can use texture maps for scalar coloring.
vtkCompositeMapperHelper2::BuildBufferObjects
void BuildBufferObjects(vtkRenderer *ren, vtkActor *act) override
Build the VBO/IBO, called by UpdateBufferObjects.
vtkCompositeMapperHelperData::StartVertex
unsigned int StartVertex
Definition: vtkCompositeMapperHelper2.h:45
vtkCompositeMapperHelperData::AmbientColor
vtkColor3d AmbientColor
Definition: vtkCompositeMapperHelper2.h:38
vtkCompositeMapperHelper2::SetParent
void SetParent(vtkCompositePolyDataMapper2 *p)
Definition: vtkCompositeMapperHelper2.h:65
vtkIdType
int vtkIdType
Definition: vtkType.h:332
vtkCompositeMapperHelper2::OverideColorUsed
bool OverideColorUsed
Definition: vtkCompositeMapperHelper2.h:163
vtkCompositeMapperHelper2::AddData
vtkCompositeMapperHelperData * AddData(vtkPolyData *pd, unsigned int flatIndex)
vtkCompositeMapperHelperData::FlatIndex
unsigned int FlatIndex
Definition: vtkCompositeMapperHelper2.h:32
vtkCompositeMapperHelper2::ProcessCompositePixelBuffers
virtual void ProcessCompositePixelBuffers(vtkHardwareSelector *sel, vtkProp *prop, vtkCompositeMapperHelperData *hdata, std::vector< unsigned int > &mypixels)
vtkCompositeMapperHelperData::Data
vtkPolyData * Data
Definition: vtkCompositeMapperHelper2.h:31
vtkCompositeMapperHelper2::DrawIBO
void DrawIBO(vtkRenderer *ren, vtkActor *actor, int primType, vtkOpenGLHelper &CellBO, GLenum mode, int pointSize)
vtkCompositeMapperHelperData::SelectionColor
vtkColor3d SelectionColor
Definition: vtkCompositeMapperHelper2.h:40
vtkCompositeMapperHelperData::NextIndex
unsigned int NextIndex[vtkOpenGLPolyDataMapper::PrimitiveEnd]
Definition: vtkCompositeMapperHelper2.h:50
vtkCompositeMapperHelper2::ProcessSelectorPixelBuffers
void ProcessSelectorPixelBuffers(vtkHardwareSelector *sel, std::vector< unsigned int > &pixeloffsets, vtkProp *prop) override
allows a mapper to update a selections color buffers Called from a prop which in turn is called from ...
vtkCompositeMapperHelper2::SetMarked
void SetMarked(bool v)
Definition: vtkCompositeMapperHelper2.h:80
vtkCompositePolyDataMapper2
mapper for composite dataset consisting of polygonal data.
Definition: vtkCompositePolyDataMapper2.h:77
vtkCompositeMapperHelper2::UpdateCameraShiftScale
void UpdateCameraShiftScale(vtkRenderer *ren, vtkActor *actor) override
handle updating shift scale based on pose changes
vtkCompositeMapperHelperData::SelectionOpacity
double SelectionOpacity
Definition: vtkCompositeMapperHelper2.h:41
vtkCompositeMapperHelperData
Definition: vtkCompositeMapperHelper2.h:29
vtkCompositeMapperHelper2::CurrentSelector
vtkHardwareSelector * CurrentSelector
Definition: vtkCompositeMapperHelper2.h:165
vtkCompositeMapperHelperData::Marked
bool Marked
Definition: vtkCompositeMapperHelper2.h:43
vtkOpenGLPolyDataMapper::PrimitiveEnd
@ PrimitiveEnd
Definition: vtkOpenGLPolyDataMapper.h:317
vtkCompositeMapperHelper2::Marked
bool Marked
Definition: vtkCompositeMapperHelper2.h:102
vtkCompositeMapperHelper2::UpdateShaders
void UpdateShaders(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act) override
Make sure appropriate shaders are defined, compiled and bound.
vtkCompositeMapperHelper2
Helper class for vtkCompositePolyDataMapper2 that is a subclass of vtkOpenGLPolyDataMapper.
Definition: vtkCompositeMapperHelper2.h:59
vtkX3D::offset
@ offset
Definition: vtkX3D.h:444
vtkCompositeMapperHelper2::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkCompositeMapperHelperData::DiffuseColor
vtkColor3d DiffuseColor
Definition: vtkCompositeMapperHelper2.h:39
vtkCompositeMapperHelper2::PickPixels
std::vector< std::vector< unsigned int > > PickPixels
used by the hardware selector
Definition: vtkCompositeMapperHelper2.h:168
vtkShaderProgram
The ShaderProgram uses one or more Shader objects.
Definition: vtkShaderProgram.h:124
vtkHardwareSelector
Definition: vtkHardwareSelector.h:153
vtkOpenGLHelper
Definition: vtkOpenGLHelper.h:31
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
vtkCompositeMapperHelperData::CellCellMap
vtkNew< vtkOpenGLCellToVTKCellMap > CellCellMap
Definition: vtkCompositeMapperHelper2.h:53
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkCompositeMapperHelperData::Opacity
double Opacity
Definition: vtkCompositeMapperHelper2.h:33
vtkCompositeMapperHelper2::~vtkCompositeMapperHelper2
~vtkCompositeMapperHelper2() override
vtkCompositeMapperHelper2::ColorArrayMap
std::map< vtkAbstractArray *, vtkDataArray * > ColorArrayMap
Definition: vtkCompositeMapperHelper2.h:170
vtkCompositeMapperHelperData::IsOpaque
bool IsOpaque
Definition: vtkCompositeMapperHelper2.h:34
vtkCompositeMapperHelper2::GetRenderedList
std::vector< vtkPolyData * > GetRenderedList() const
Accessor to the ordered list of PolyData that we last drew.
vtkNew< vtkOpenGLCellToVTKCellMap >
vtkCompositeMapperHelperData::StartIndex
unsigned int StartIndex[vtkOpenGLPolyDataMapper::PrimitiveEnd]
Definition: vtkCompositeMapperHelper2.h:49
vtkCompositeMapperHelper2::RenderPiece
void RenderPiece(vtkRenderer *ren, vtkActor *act) override
Implemented by sub classes.
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:76
vtkCompositeMapperHelperData::Pickability
bool Pickability
Definition: vtkCompositeMapperHelper2.h:36
vtkColor3d
Definition: vtkColor.h:356
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:182
vtkCompositeMapperHelperData::Visibility
bool Visibility
Definition: vtkCompositeMapperHelper2.h:35
vtkCompositeMapperHelper2::vtkCompositeMapperHelper2
vtkCompositeMapperHelper2()
Definition: vtkCompositeMapperHelper2.h:107
vtkCompositeMapperHelper2::New
static vtkCompositeMapperHelper2 * New()
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
vtkCompositeMapperHelper2::VertexOffsets
std::vector< unsigned int > VertexOffsets
Definition: vtkCompositeMapperHelper2.h:155
vtkCompositeMapperHelper2::GetMarked
bool GetMarked()
Definition: vtkCompositeMapperHelper2.h:79
vtkX3D::mode
@ mode
Definition: vtkX3D.h:253
vtkCompositeMapperHelper2::BuildSelectionIBO
void BuildSelectionIBO(vtkPolyData *poly, std::vector< unsigned int >(&indices)[4], vtkIdType offset) override
Build the selection IBOs, called by UpdateBufferObjects.
vtkCompositeMapperHelper2::Parent
vtkCompositePolyDataMapper2 * Parent
Definition: vtkCompositeMapperHelper2.h:99
vtkCompositeMapperHelper2::GetNeedToRebuildBufferObjects
bool GetNeedToRebuildBufferObjects(vtkRenderer *ren, vtkActor *act) override
Does the VBO/IBO need to be rebuilt.
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:169
vtkCompositeMapperHelper2::AppendOneBufferObject
virtual void AppendOneBufferObject(vtkRenderer *ren, vtkActor *act, vtkCompositeMapperHelperData *hdata, vtkIdType &flat_index, std::vector< unsigned char > &colors, std::vector< float > &norms)
vtkOpenGLPolyDataMapper.h
vtkOpenGLPolyDataMapper
PolyDataMapper using OpenGL to render.
Definition: vtkOpenGLPolyDataMapper.h:149
vtkCompositeMapperHelperData::OverridesColor
bool OverridesColor
Definition: vtkCompositeMapperHelper2.h:37
vtkCompositeMapperHelper2::RenderPieceDraw
void RenderPieceDraw(vtkRenderer *ren, vtkActor *act) override
Implemented by sub classes.
vtkCompositeMapperHelper2::SetShaderValues
virtual void SetShaderValues(vtkShaderProgram *prog, vtkCompositeMapperHelperData *hdata, size_t primOffset)
vtkCompositeMapperHelper2::RemoveUnused
void RemoveUnused()
vtkCompositeMapperHelper2::PrimIDUsed
bool PrimIDUsed
Definition: vtkCompositeMapperHelper2.h:162