VTK  9.5.2
vtkOpenGLLowMemoryBatchedPolyDataMapper.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
10
11#ifndef vtkOpenGLLowMemoryBatchedPolyDataMapper_h
12#define vtkOpenGLLowMemoryBatchedPolyDataMapper_h
13
14#include "vtkBoundingBox.h"
16
17#include "vtkColor.h" // class uses vtkColor
18#include "vtkNew.h" // for ivar
19#include "vtkOpenGLCompositePolyDataMapperDelegator.h" // for struct BatchElement
20#include "vtkRenderingOpenGL2Module.h" // for export macro
21#include "vtkSmartPointer.h" // for arg
22#include "vtk_glad.h" // for OpenGL defs
23
24#include <cstdint> // for std::uintptr_t
25#include <memory> // for shared_ptr
26
27VTK_ABI_NAMESPACE_BEGIN
29class vtkPolyData;
30
31class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLLowMemoryBatchedPolyDataMapper
33{
34public:
37 void PrintSelf(ostream& os, vtkIndent indent) override;
38
40
45 {
47 std::size_t CellGroupId;
48 };
49 void AddBatchElement(unsigned int flatIndex, BatchElement&& batchElement);
53
57 std::vector<vtkPolyData*> GetRenderedList() const;
59
63 void RenderPiece(vtkRenderer* renderer, vtkActor* actor) override;
66
72 vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
73
75 GLBatchElement* glBatchElement, std::vector<unsigned int>& mypixels);
76
81
82protected:
85
86 void RenderPieceDraw(vtkRenderer* renderer, vtkActor* actor) override;
87
88 bool IsDataObjectUpToDate() override;
94 void UpdateShaders(vtkRenderer* renderer, vtkActor* actor) override;
95 void UpdateShiftScale(vtkRenderer* renderer, vtkActor* actor) override;
97 vtkRenderer* renderer, vtkActor* actor, std::string& vsSource, std::string& fsSource) override;
99
104 virtual void SetShaderValues(GLBatchElement* glBatchElement);
105
106 // Reference to CPDM
108 // Maps an address of a vtkPolyData to its rendering attributes.
109 std::map<std::uintptr_t, std::unique_ptr<GLBatchElement>> VTKPolyDataToGLBatchElement;
110 // Whether override color is used for a vtkPolyData
112 // Reference to the current selector.
114 // used by the hardware selector
115 std::vector<std::vector<unsigned int>> PickPixels;
116 // cached array map
117 std::map<vtkAbstractArray*, vtkDataArray*> ColorArrayMap;
118 // cached bbox of all points
120
121private:
123 void operator=(const vtkOpenGLLowMemoryBatchedPolyDataMapper&) = delete;
124};
125
126VTK_ABI_NAMESPACE_END
127#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:42
Fast, simple class for representing and operating on 3D bounds.
a class that renders hierarchical polygonal data
general representation of visualization data
a simple class to control print indentation
Definition vtkIndent.h:29
vtkCompositePolyDataMapperDelegator::BatchElement BatchElement
std::vector< std::vector< unsigned int > > PickPixels
virtual void SetShaderValues(GLBatchElement *glBatchElement)
Applies rendering attributes for the corresponding polydata in the glBatchElement.
bool IsShaderNormalSourceUpToDate(vtkActor *actor) override
std::map< vtkAbstractArray *, vtkDataArray * > ColorArrayMap
void SetParent(vtkCompositePolyDataMapper *parent)
std::vector< vtkPolyData * > GetRenderedList() const
Accessor to the ordered list of PolyData that we last drew.
int CanUseTextureMapForColoring(vtkDataObject *) override
Returns if we can use texture maps for scalar coloring.
void RenderPiece(vtkRenderer *renderer, vtkActor *actor) override
Implemented by sub classes.
void DrawPrimitives(vtkRenderer *renderer, vtkActor *, PrimitiveInformation &primitive)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkOpenGLCompositePolyDataMapperDelegator::BatchElement BatchElement
API to add and query a GLBatchElement instance per vtkPolyData.
void AddBatchElement(unsigned int flatIndex, BatchElement &&batchElement)
API to add and query a GLBatchElement instance per vtkPolyData.
std::map< std::uintptr_t, std::unique_ptr< GLBatchElement > > VTKPolyDataToGLBatchElement
vtkMTimeType GetMTime() override
Returns the maximum of our and Parent vtkCompositePolyDataMapper's MTime.
static vtkOpenGLLowMemoryBatchedPolyDataMapper * New()
bool IsShaderColorSourceUpToDate(vtkActor *actor) override
vtkDataArray * GetColors(vtkPolyData *mesh) override
void RenderPieceDraw(vtkRenderer *renderer, vtkActor *actor) override
virtual void ProcessCompositePixelBuffers(vtkHardwareSelector *sel, vtkProp *prop, GLBatchElement *glBatchElement, std::vector< unsigned int > &mypixels)
void UpdateShaders(vtkRenderer *renderer, vtkActor *actor) override
void UpdateShiftScale(vtkRenderer *renderer, vtkActor *actor) override
void ReplaceShaderColor(vtkRenderer *renderer, vtkActor *actor, std::string &vsSource, std::string &fsSource) override
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 ...
bool BindArraysToTextureBuffers(vtkRenderer *renderer, vtkActor *actor, vtkCellGraphicsPrimitiveMap::CellTypeMapperOffsets &offsets) override
BatchElement * GetBatchElement(vtkPolyData *polydata)
API to add and query a GLBatchElement instance per vtkPolyData.
void ClearBatchElements()
API to add and query a GLBatchElement instance per vtkPolyData.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:72
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:44
abstract specification for renderers
Definition vtkRenderer.h:60
#define vtkDataArray
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:287