VTK  9.4.20250211
vtkOpenGLGlyph3DHelper.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
10#ifndef vtkOpenGLGlyph3DHelper_h
11#define vtkOpenGLGlyph3DHelper_h
12
13#include "vtkNew.h" // For vtkNew
14#include "vtkOpenGLBufferObject.h" // For vtkOpenGLBufferObject
15#include "vtkOpenGLHelper.h" // For vtkOpenGLHelper
16#include "vtkOpenGLInstanceCulling.h" // For vtkOpenGLInstanceCulling
18#include "vtkRenderingOpenGL2Module.h" // For export macro
19
20VTK_ABI_NAMESPACE_BEGIN
21class vtkBitArray;
22
23class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLGlyph3DHelper : public vtkOpenGLPolyDataMapper
24{
25public:
28 void PrintSelf(ostream& os, vtkIndent indent) override;
29
34 void GlyphRender(vtkRenderer* ren, vtkActor* actor, vtkIdType numPts,
35 std::vector<unsigned char>& colors, std::vector<float>& matrices,
36 std::vector<float>& normalMatrices, std::vector<vtkIdType>& pickIds, vtkMTimeType pointMTime,
37 bool culling);
38
39 void SetLODs(std::vector<std::pair<float, float>>& lods);
40
41 void SetLODColoring(bool val);
42
48 void ReleaseGraphicsResources(vtkWindow* window) override;
49
50protected:
52 ~vtkOpenGLGlyph3DHelper() override = default;
53
54 // special opengl 32 version that uses instances
56 std::vector<unsigned char>& colors, std::vector<float>& matrices,
57 std::vector<float>& normalMatrices, vtkMTimeType pointMTime, bool culling);
58
63 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
64
66
70 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* actor) override;
72 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
74 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
76 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
78 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
80 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
82 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
84
89
90 void BuildCullingShaders(vtkRenderer* ren, vtkActor* actor, vtkIdType numPts, bool withNormals);
91
93
99
100 std::vector<std::pair<float, float>> LODs;
102
103private:
105 void operator=(const vtkOpenGLGlyph3DHelper&) = delete;
106};
107
108VTK_ABI_NAMESPACE_END
109#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:151
dynamic, self-adjusting array of bits
Definition vtkBitArray.h:29
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.
void ReleaseGraphicsResources(vtkWindow *window) override
Release any graphics resources that are being consumed by this mapper.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetLODs(std::vector< std::pair< float, float > > &lods)
void ReplaceShaderPicking(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates.
void GetShaderTemplate(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Create the basic shaders before replacement.
void SetLODColoring(bool val)
void ReplaceShaderPositionVC(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates.
void GlyphRender(vtkRenderer *ren, vtkActor *actor, vtkIdType numPts, std::vector< unsigned char > &colors, std::vector< float > &matrices, std::vector< float > &normalMatrices, std::vector< vtkIdType > &pickIds, vtkMTimeType pointMTime, bool culling)
Fast path for rendering glyphs comprised of only one type of primitive Must set this->CurrentInput ex...
vtkNew< vtkOpenGLInstanceCulling > InstanceCulling
void ReplaceShaderValues(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *actor) override
Perform string replacements on the shader templates.
void SetMapperShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act) override
Set the shader parameters related to the actor/mapper.
vtkNew< vtkOpenGLBufferObject > ColorBuffer
void ReplaceShaderColor(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates.
static vtkOpenGLGlyph3DHelper * New()
void ReplaceShaderNormal(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates.
void GlyphRenderInstances(vtkRenderer *ren, vtkActor *actor, vtkIdType numPts, std::vector< unsigned char > &colors, std::vector< float > &matrices, std::vector< float > &normalMatrices, vtkMTimeType pointMTime, bool culling)
void ReplaceShaderClip(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act) override
Perform string replacements on the shader templates.
vtkNew< vtkOpenGLBufferObject > MatrixBuffer
vtkNew< vtkOpenGLBufferObject > NormalMatrixBuffer
~vtkOpenGLGlyph3DHelper() override=default
void ReplaceShaderPointSize(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates.
std::vector< std::pair< float, float > > LODs
void BuildCullingShaders(vtkRenderer *ren, vtkActor *actor, vtkIdType numPts, bool withNormals)
PolyDataMapper using OpenGL to render.
abstract specification for renderers
record modification and/or execution time
window superclass for vtkRenderWindow
Definition vtkWindow.h:48
int vtkIdType
Definition vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270