VTK  9.7.1
vtkOpenGLLowMemoryCellTypeAgent.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
9 #ifndef vtkOpenGLLowMemoryCellTypeAgent_h
10 #define vtkOpenGLLowMemoryCellTypeAgent_h
11 
14 #include "vtkRenderingOpenGL2Module.h"
15 
16 VTK_ABI_NAMESPACE_BEGIN
17 class vtkActor;
18 class vtkRenderer;
19 
20 class VTKRENDERINGOPENGL2_NO_EXPORT vtkOpenGLLowMemoryCellTypeAgent
21 {
22 public:
25 
26  void PreDraw(
27  vtkRenderer* renderer, vtkActor* actor, vtkOpenGLLowMemoryPolyDataMapper* mapper) const;
28  void Draw(vtkRenderer* renderer, vtkActor* actor, vtkOpenGLLowMemoryPolyDataMapper* mapper,
29  const std::vector<vtkOpenGLLowMemoryPolyDataMapper::CellGroupInformation>& cellGroups,
30  std::size_t cellGroupIdx = 0) const;
31  void PostDraw(
32  vtkRenderer* renderer, vtkActor* actor, vtkOpenGLLowMemoryPolyDataMapper* mapper) const;
33 
34  virtual bool ImplementsVertexVisibilityPass() const = 0;
35  void BeginVertexVisibilityPass() { this->InVertexVisibilityPass = true; }
36  void EndVertexVisibilityPass() { this->InVertexVisibilityPass = false; }
37 
38 protected:
39  virtual void PreDrawInternal(
40  vtkRenderer* renderer, vtkActor* actor, vtkOpenGLLowMemoryPolyDataMapper* lmMapper) const = 0;
41  virtual void PostDrawInternal(
42  vtkRenderer* renderer, vtkActor* actor, vtkOpenGLLowMemoryPolyDataMapper* lmMapper) const = 0;
43 
44  int NumberOfPointsPerPrimitive = 1;
45  bool InVertexVisibilityPass = false;
46  mutable int NumberOfPseudoPrimitivesPerElement =
47  1; // Used to track how many pseudo primitives are used for each element type.
48 };
49 
50 VTK_ABI_NAMESPACE_END
51 #endif
52 
53 // Need to skip header testing since we do not inherit vtkObject:
54 // VTK-HeaderTest-Exclude: vtkOpenGLLowMemoryCellTypeAgent.h
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:41
abstract specification for renderers
Definition: vtkRenderer.h:63
PolyDataMapper using OpenGL to render surface meshes.
Helps vtkOpenGLLowMemoryPolyDataMapper map and draw cell types from vtkPolyData as OpenGL graphics pr...