VTK  9.7.20260917
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
9
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#include "vtkSmartPointer.h" // For vtkSmartPointer
20
21VTK_ABI_NAMESPACE_BEGIN
22class vtkBitArray;
24
25class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLGlyph3DHelper : public vtkOpenGLPolyDataMapper
26{
27public:
30 void PrintSelf(ostream& os, vtkIndent indent) override;
31
36 void GlyphRender(vtkRenderer* ren, vtkActor* actor, vtkIdType numPts,
37 std::vector<unsigned char>& colors, std::vector<float>& matrices,
38 std::vector<float>& normalMatrices, std::vector<vtkIdType>& pickIds, vtkMTimeType pointMTime,
39 bool culling);
40
41 void SetLODs(std::vector<std::pair<float, float>>& lods);
42
43 void SetLODColoring(bool val);
44
50 void ReleaseGraphicsResources(vtkWindow* window) override;
51
52protected:
54 ~vtkOpenGLGlyph3DHelper() override = default;
55
56 // special opengl 32 version that uses instances
58 std::vector<unsigned char>& colors, std::vector<float>& matrices,
59 std::vector<float>& normalMatrices, vtkMTimeType pointMTime, bool culling);
60
65 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act) override;
66
68
72 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* actor) 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) override;
84 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
86 std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
88
93
94 void BuildCullingShaders(vtkRenderer* ren, vtkActor* actor, vtkIdType numPts, bool withNormals);
95
97
103
104 std::vector<std::pair<float, float>> LODs;
106
107private:
109 void operator=(const vtkOpenGLGlyph3DHelper&) = delete;
110
112
119 float CachedLineWidth = -1.0;
120 std::vector<float> LineWidthOffsets;
121 vtkSmartPointer<vtkTextureObject> LineWidthOffsetsTexture;
123};
124
125VTK_ABI_NAMESPACE_END
126#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:151
dynamic, self-adjusting array of bits
Definition vtkBitArray.h:34
a simple class to control print indentation
Definition vtkIndent.h:108
Allocate and hold a VTK object.
Definition vtkNew.h:168
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.
void ReplaceShaderWideLines(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)
abstract specification for renderers
Hold a reference to a vtkObjectBase instance.
abstracts an OpenGL texture object.
record modification and/or execution time
window superclass for vtkRenderWindow
Definition vtkWindow.h:62
int vtkIdType
Definition vtkType.h:363
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318