VTK  9.6.20260209
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
13
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
34class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLCompositePolyDataMapperDelegator
36{
37public:
42 void PrintSelf(ostream& os, vtkIndent indent) override;
43
44 // This class extends the rendering attributes for a vtkPolyData with OpenGL specifics.
47 {
49
50 unsigned int StartVertex;
51 unsigned int NextVertex;
52
53 // point line poly strip edge stripedge
56
57 // stores the mapping from vtk cells to gl_PrimitiveId
59 };
60
62
65 // Copy array names used for selection. Ex: PointIdArrayName, CompositeIdArrayName, ..
68 void UnmarkBatchElements() override;
70
71protected:
74
76
79 std::vector<vtkPolyData*> GetRenderedList() const override;
80 void SetParent(vtkCompositePolyDataMapper* mapper) override;
81 void Insert(BatchElement&& item) override;
82 BatchElement* Get(vtkPolyData* polydata) override;
83 void Clear() override;
85
86 // The actual mapper which renders multiple vtkPolyData.
87 // Constructor assigns it to vtkBatchedPolyDataMapperDelegator::Delegate.
88 // From that point on, parent class manages lifetime of this GLDelegate.
89 // Instead of repeatedly downcasting the abstract Delegate, we trampoline
90 // calls to GLDelegate.
92
93private:
96 void operator=(const vtkOpenGLCompositePolyDataMapperDelegator&) = delete;
97};
98
99#define vtkOpenGLCompositePolyDataMapperDelegator_OVERRIDE_ATTRIBUTES \
100 vtkOpenGLCompositePolyDataMapperDelegator::CreateOverrideAttributes()
101VTK_ABI_NAMESPACE_END
102#endif
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.
std::vector< vtkPolyData * > GetRenderedList() const override
Implement parent class API.
void Clear() override
Implement parent class API.
static vtkOverrideAttribute * CreateOverrideAttributes()
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.
vtkCompositePolyDataMapperDelegator::BatchElement BatchElement
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.
Attribute for vtkObjectFactory overrides.
concrete dataset represents vertices, lines, polygons, and triangle strips
#define VTK_NEWINSTANCE