VTK  9.4.2
vtkCompositeMapperHelper2.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
4#ifndef vtkCompositeMapperHelper2_h
5#define vtkCompositeMapperHelper2_h
6
8
9#include "vtkColor.h" // class uses vtkColor
10#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_3_0
11#include "vtkRenderingOpenGL2Module.h" // for export macro
12#include "vtk_glad.h" // for OpenGL enums
13VTK_ABI_NAMESPACE_BEGIN
14class vtkPolyData;
16
17// this class encapsulates values tied to a
18// polydata
19
21 "Please use vtkCompositePolyDataMapper instead") vtkCompositeMapperHelperData
22{
23public:
25 unsigned int FlatIndex;
26 double Opacity;
35
36 bool Marked;
37
38 unsigned int StartVertex;
39 unsigned int NextVertex;
40
41 // point line poly strip edge stripedge
42 unsigned int StartIndex[vtkOpenGLPolyDataMapper::PrimitiveEnd];
44
45 // stores the mapping from vtk cells to gl_PrimitiveId
47};
48
49//===================================================================
51class VTK_DEPRECATED_IN_9_3_0("Please use vtkCompositePolyDataMapper instead")
52 VTKRENDERINGOPENGL2_EXPORT vtkCompositeMapperHelper2 : public vtkOpenGLPolyDataMapper
53{
54public:
57 void PrintSelf(ostream& os, vtkIndent indent) override;
58
59 void SetParent(vtkCompositePolyDataMapper2* p) { this->Parent = p; }
60
61 vtkCompositeMapperHelperData* AddData(vtkPolyData* pd, unsigned int flatIndex);
62
66 void RenderPiece(vtkRenderer* ren, vtkActor* act) override;
67
71 void ClearMark();
73 bool GetMarked() { return this->Marked; }
74 void SetMarked(bool v) { this->Marked = v; }
76
80 std::vector<vtkPolyData*> GetRenderedList() const;
81
87 vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
88
90 vtkCompositeMapperHelperData* hdata, std::vector<unsigned int>& mypixels);
91
92protected:
94 std::map<vtkPolyData*, vtkCompositeMapperHelperData*> Data;
95
96 bool Marked;
97
99 void UpdateCameraShiftScale(vtkRenderer* ren, vtkActor* actor) override;
100
101 vtkCompositeMapperHelper2() { this->Parent = nullptr; }
103
104 void DrawIBO(vtkRenderer* ren, vtkActor* actor, int primType, vtkOpenGLHelper& CellBO,
105 GLenum mode, int pointSize);
106
107 virtual void SetShaderValues(
108 vtkShaderProgram* prog, vtkCompositeMapperHelperData* hdata, size_t primOffset);
109
114 void UpdateShaders(vtkOpenGLHelper& cellBO, vtkRenderer* ren, vtkActor* act) override;
115
121 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
122
127
131 void BuildBufferObjects(vtkRenderer* ren, vtkActor* act) override;
133 vtkCompositeMapperHelperData* hdata, vtkIdType& flat_index, std::vector<unsigned char>& colors,
134 std::vector<float>& norms);
135
140 vtkPolyData* poly, std::vector<unsigned int> (&indices)[4], vtkIdType offset) override;
141
148
149 std::vector<unsigned int> VertexOffsets;
150
151 // vert line poly strip edge stripedge
152 std::vector<unsigned int> IndexArray[PrimitiveEnd];
153
154 void RenderPieceDraw(vtkRenderer* ren, vtkActor* act) override;
155
158
160
162 std::vector<std::vector<unsigned int>> PickPixels;
163
164 std::map<vtkAbstractArray*, vtkDataArray*> ColorArrayMap;
165
166private:
168 void operator=(const vtkCompositeMapperHelper2&) = delete;
169};
170
171VTK_ABI_NAMESPACE_END
172#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:151
Helper class for vtkCompositePolyDataMapper2 that is a subclass of vtkOpenGLPolyDataMapper.
vtkCompositeMapperHelperData * AddData(vtkPolyData *pd, unsigned int flatIndex)
void UpdateShaders(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act) override
Make sure appropriate shaders are defined, compiled and bound.
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 ...
void RenderPiece(vtkRenderer *ren, vtkActor *act) override
Implemented by sub classes.
void DrawIBO(vtkRenderer *ren, vtkActor *actor, int primType, vtkOpenGLHelper &CellBO, GLenum mode, int pointSize)
std::vector< unsigned int > VertexOffsets
void UpdateCameraShiftScale(vtkRenderer *ren, vtkActor *actor) override
handle updating shift scale based on pose changes
virtual void ProcessCompositePixelBuffers(vtkHardwareSelector *sel, vtkProp *prop, vtkCompositeMapperHelperData *hdata, std::vector< unsigned int > &mypixels)
std::map< vtkAbstractArray *, vtkDataArray * > ColorArrayMap
virtual void SetShaderValues(vtkShaderProgram *prog, vtkCompositeMapperHelperData *hdata, size_t primOffset)
void ReplaceShaderColor(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual void AppendOneBufferObject(vtkRenderer *ren, vtkActor *act, vtkCompositeMapperHelperData *hdata, vtkIdType &flat_index, std::vector< unsigned char > &colors, std::vector< float > &norms)
void RenderPieceDraw(vtkRenderer *ren, vtkActor *act) override
Implemented by sub classes.
std::vector< vtkPolyData * > GetRenderedList() const
Accessor to the ordered list of PolyData that we last drew.
vtkCompositePolyDataMapper2 * Parent
bool GetNeedToRebuildBufferObjects(vtkRenderer *ren, vtkActor *act) override
Does the VBO/IBO need to be rebuilt.
static vtkCompositeMapperHelper2 * New()
void BuildBufferObjects(vtkRenderer *ren, vtkActor *act) override
Build the VBO/IBO, called by UpdateBufferObjects.
void SetParent(vtkCompositePolyDataMapper2 *p)
std::map< vtkPolyData *, vtkCompositeMapperHelperData * > Data
int CanUseTextureMapForColoring(vtkDataObject *) override
Returns if we can use texture maps for scalar coloring.
void BuildSelectionIBO(vtkPolyData *poly, std::vector< unsigned int >(&indices)[4], vtkIdType offset) override
Build the selection IBOs, called by UpdateBufferObjects.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
std::vector< std::vector< unsigned int > > PickPixels
used by the hardware selector
~vtkCompositeMapperHelper2() override
vtkNew< vtkOpenGLCellToVTKCellMap > CellCellMap
mapper for composite dataset consisting of polygonal data.
general representation of visualization data
a simple class to control print indentation
Definition vtkIndent.h:108
Allocate and hold a VTK object.
Definition vtkNew.h:167
PolyDataMapper using OpenGL to render.
concrete dataset represents vertices, lines, polygons, and triangle strips
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:66
abstract specification for renderers
The ShaderProgram uses one or more Shader objects.
#define VTK_DEPRECATED_IN_9_3_0(reason)
int vtkIdType
Definition vtkType.h:315