VTK  9.4.20250310
vtkOpenGLCompositePolyDataMapperDelegator.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
14#ifndef vtkOpenGLCompositePolyDataMapperDelegator_h
15#define vtkOpenGLCompositePolyDataMapperDelegator_h
16
18
19#include "vtkNew.h" // for ivar
20#include "vtkOpenGLPolyDataMapper.h" // for PrimitiveEnd
21#include "vtkRenderingOpenGL2Module.h" // for export macro
22
23#include "vtk_glad.h"
24
25VTK_ABI_NAMESPACE_BEGIN
26#ifdef GL_ES_VERSION_3_0
28#define GLDelegateClass vtkOpenGLLowMemoryBatchedPolyDataMapper
29#else
31#define GLDelegateClass vtkOpenGLBatchedPolyDataMapper
32#endif
33class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLCompositePolyDataMapperDelegator
35{
36public:
39 void PrintSelf(ostream& os, vtkIndent indent) override;
40
41 // This class extends the rendering attributes for a vtkPolyData with OpenGL specifics.
44 {
46
47 unsigned int StartVertex;
48 unsigned int NextVertex;
49
50 // point line poly strip edge stripedge
51 unsigned int StartIndex[vtkOpenGLPolyDataMapper::PrimitiveEnd];
53
54 // stores the mapping from vtk cells to gl_PrimitiveId
56 };
57
59
62 // Copy array names used for selection. Ex: PointIdArrayName, CompositeIdArrayName, ..
65 void UnmarkBatchElements() override;
67
68protected:
71
73
76 std::vector<vtkPolyData*> GetRenderedList() const override;
77 void SetParent(vtkCompositePolyDataMapper* mapper) override;
78 void Insert(BatchElement&& item) override;
79 BatchElement* Get(vtkPolyData* polydata) override;
80 void Clear() override;
82
83 // The actual mapper which renders multiple vtkPolyData.
84 // Constructor assigns it to vtkBatchedPolyDataMapperDelegator::Delegate.
85 // From that point on, parent class manages lifetime of this GLDelegate.
86 // Instead of repeatedly downcasting the abstract Delegate, we trampoline
87 // calls to GLDelegate.
88 GLDelegateClass* GLDelegate = nullptr;
89
90private:
93 void operator=(const vtkOpenGLCompositePolyDataMapperDelegator&) = delete;
94};
95
96VTK_ABI_NAMESPACE_END
97#endif
Delegates rendering of multiple polydata that share similar signatures.
a class that renders hierarchical polygonal data
a simple class to control print indentation
Definition vtkIndent.h:108
Allocate and hold a VTK object.
Definition vtkNew.h:167
An OpenGL mapper for batched rendering of vtkPolyData.
An OpenGL delegator for batched rendering of multiple polydata with similar structure.
std::vector< vtkPolyData * > GetRenderedList() const override
Implement parent class API.
void Clear() override
Implement parent class API.
void UnmarkBatchElements() override
Implement parent class API.
void ShallowCopy(vtkCompositePolyDataMapper *mapper) override
Implement parent class API.
void SetParent(vtkCompositePolyDataMapper *mapper) override
Implement parent class API.
static vtkOpenGLCompositePolyDataMapperDelegator * New()
BatchElement * Get(vtkPolyData *polydata) override
Implement parent class API.
void Insert(BatchElement &&item) override
Implement parent class API.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ClearUnmarkedBatchElements() override
Implement parent class API.
An OpenGL mapper for batched rendering of vtkPolyData.
concrete dataset represents vertices, lines, polygons, and triangle strips