VTK  9.3.20240327
vtkOpenGLPolyDataMapper.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
105 #ifndef vtkOpenGLPolyDataMapper_h
106 #define vtkOpenGLPolyDataMapper_h
107 
108 #include "vtkInformation.h" // for prim struct
109 #include "vtkNew.h" // For vtkNew
110 #include "vtkOpenGLHelper.h" // used for ivars
111 #include "vtkPolyDataMapper.h"
112 #include "vtkRenderingOpenGL2Module.h" // For export macro
113 #include "vtkShader.h" // for methods
114 #include "vtkStateStorage.h" // used for ivars
115 
116 #include <map> // for map
117 #include <tuple> // for tuple
118 #include <vector> // for vector
119 
120 VTK_ABI_NAMESPACE_BEGIN
121 class vtkCellArray;
123 class vtkMatrix4x4;
124 class vtkMatrix3x3;
127 class vtkOpenGLTexture;
131 class vtkPoints;
132 class vtkTexture;
133 class vtkTextureObject;
134 class vtkTransform;
136 
137 class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLPolyDataMapper : public vtkPolyDataMapper
138 {
139 public:
142  void PrintSelf(ostream& os, vtkIndent indent) override;
143 
147  void RenderPiece(vtkRenderer* ren, vtkActor* act) override;
148 
155 
157 
160  virtual void RenderPieceStart(vtkRenderer* ren, vtkActor* act);
161  virtual void RenderPieceDraw(vtkRenderer* ren, vtkActor* act);
162  virtual void RenderPieceFinish(vtkRenderer* ren, vtkActor* act);
164 
171 
172  vtkGetMacro(PopulateSelectionSettings, int);
173  void SetPopulateSelectionSettings(int v) { this->PopulateSelectionSettings = v; }
174 
181  bool GetSupportsSelection() override { return true; }
182 
183  // used by RenderPiece and functions it calls to reduce
184  // calls to get the input and allow for rendering of
185  // other polydata (not the input)
187 
189 
195  vtkSetStringMacro(PointIdArrayName);
196  vtkGetStringMacro(PointIdArrayName);
197  vtkSetStringMacro(CellIdArrayName);
198  vtkGetStringMacro(CellIdArrayName);
200 
202 
207  vtkSetStringMacro(ProcessIdArrayName);
208  vtkGetStringMacro(ProcessIdArrayName);
210 
212 
221  vtkSetStringMacro(CompositeIdArrayName);
222  vtkGetStringMacro(CompositeIdArrayName);
224 
228  void ShallowCopy(vtkAbstractMapper* m) override;
229 
231  vtkGetObjectMacro(VBOs, vtkOpenGLVertexBufferObjectGroup);
232 
236  void SetVBOShiftScaleMethod(int method) override;
237 
246  vtkGetMacro(UseProgramPointSize, bool);
247  vtkSetMacro(UseProgramPointSize, bool);
248  vtkBooleanMacro(UseProgramPointSize, bool);
249 
251  {
252  PrimitiveStart = 0,
253  PrimitivePoints = 0,
258  PrimitiveEnd
259  };
260 
272  void MapDataArrayToVertexAttribute(const char* vertexAttributeName, const char* dataArrayName,
273  int fieldAssociation, int componentno = -1) override;
274 
275  // This method will Map the specified data array for use as
276  // a texture coordinate for texture tname. The actual
277  // attribute will be named tname_coord so as to not
278  // conflict with the texture sampler definition which will
279  // be tname.
280  void MapDataArrayToMultiTextureAttribute(const char* tname, const char* dataArrayName,
281  int fieldAssociation, int componentno = -1) override;
282 
286  void RemoveVertexAttributeMapping(const char* vertexAttributeName) override;
287 
292 
298  vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
299 
300 protected:
303 
305 
306  void MapDataArray(const char* vertexAttributeName, const char* dataArrayName,
307  const char* texturename, int fieldAssociation, int componentno);
308 
309  // what coordinate should be used for this texture
311 
312  // handle updating shift scale based on pose changes
313  virtual void UpdateCameraShiftScale(vtkRenderer* ren, vtkActor* actor);
314 
318  void GetCoincidentParameters(vtkRenderer* ren, vtkActor* actor, float& factor, float& offset);
319 
325  void ComputeBounds() override;
326 
331  virtual void UpdateShaders(vtkOpenGLHelper& cellBO, vtkRenderer* ren, vtkActor* act);
332 
336  virtual bool GetNeedToRebuildShaders(vtkOpenGLHelper& cellBO, vtkRenderer* ren, vtkActor* act);
337 
341  virtual void BuildShaders(
342  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
343 
347  virtual void GetShaderTemplate(
348  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
349 
353  virtual void ReplaceShaderValues(
354  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
355 
357 
362  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act, bool prePass);
364  std::map<vtkShader::Type, vtkShader*> shaders, vtkActor* act);
365  virtual void ReplaceShaderColor(
366  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
367  virtual void ReplaceShaderEdges(
368  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
369  virtual void ReplaceShaderLight(
370  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
371  virtual void ReplaceShaderTCoord(
372  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
373  virtual void ReplaceShaderPicking(
374  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
375  virtual void ReplaceShaderPrimID(
376  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
377  virtual void ReplaceShaderNormal(
378  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
379  virtual void ReplaceShaderClip(
380  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
382  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
384  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
385  virtual void ReplaceShaderDepth(
386  std::map<vtkShader::Type, vtkShader*> shaders, vtkRenderer* ren, vtkActor* act);
388 
392  virtual void SetCustomUniforms(vtkOpenGLHelper& cellBO, vtkActor* actor);
393 
398 
403  vtkOpenGLHelper& cellBO, vtkRenderer* ren, vtkActor* act);
404 
409 
414  vtkOpenGLHelper& cellBO, vtkRenderer* ren, vtkActor* act);
415 
419  virtual void UpdateBufferObjects(vtkRenderer* ren, vtkActor* act);
420 
425 
429  virtual void BuildBufferObjects(vtkRenderer* ren, vtkActor* act);
430 
434  virtual void BuildIBO(vtkRenderer* ren, vtkActor* act, vtkPolyData* poly);
435 
439  virtual void BuildSelectionIBO(
440  vtkPolyData* poly, std::vector<unsigned int> (&indices)[4], vtkIdType offset);
441 
445  virtual void BuildSelectionCache(const char* arrayName, bool selectingPoints, vtkPolyData* poly);
446 
447  // The VBO and its layout.
449 
450  // Structures for the various cell types we render.
451  vtkOpenGLHelper Primitives[PrimitiveEnd];
452  vtkOpenGLHelper SelectionPrimitives[PrimitiveEnd];
455  bool DrawingSelection = false;
457  vtkMTimeType SelectionTime = 0;
458 
459  std::map<std::tuple<unsigned int, unsigned int, vtkIdType>, std::vector<vtkIdType>>
462  bool SelectionCacheForPoints = false;
463  vtkMTimeType SelectionCacheTime = 0;
464  vtkPolyData* SelectionPolyData = nullptr;
465 
466  // do we have wide lines that require special handling
468 
469  // do we have textures that require special handling
470  virtual bool HaveTextures(vtkActor* actor);
471 
472  // how many textures do we have
473  virtual unsigned int GetNumberOfTextures(vtkActor* actor);
474 
475  // populate a vector with the textures we have
476  // the order is always
477  // ColorInternalTexture
478  // Actors texture
479  // Properties textures
480  virtual std::vector<std::pair<vtkTexture*, std::string>> GetTextures(vtkActor* actor);
481 
482  // do we have textures coordinates that require special handling
483  virtual bool HaveTCoords(vtkPolyData* poly);
484 
485  // values we use to determine if we need to rebuild shaders
486  // stored in a map keyed on the vtkOpenGLHelper, so one
487  // typically entry per type of primitive we render which
488  // matches the shader programs we use
490  {
491  public:
495 
496  // Caches the vtkOpenGLRenderPass::RenderPasses() information.
497  // Note: Do not dereference the pointers held by this object. There is no
498  // guarantee that they are still valid!
500  };
501  std::map<const vtkOpenGLHelper*, primitiveInfo> PrimitiveInfo;
502 
506 
507  // Check the renderpasses in actor's property keys to see if they've changed
508  // render stages:
510 
512  vtkTimeStamp VBOBuildTime; // When was the OpenGL VBO updated?
513  vtkStateStorage VBOBuildState; // used for determining when to rebuild the VBO
514  vtkStateStorage IBOBuildState; // used for determining whento rebuild the IBOs
516  vtkStateStorage TempState; // can be used to avoid constant allocs/deallocs
518 
521 
527 
528  // if set to true, tcoords will be passed to the
529  // VBO even if the mapper knows of no texture maps
530  // normally tcoords are only added to the VBO if the
531  // mapper has identified a texture map as well.
533 
534  virtual void BuildCellTextures(
535  vtkRenderer* ren, vtkActor*, vtkCellArray* prims[4], int representation);
536 
537  void AppendCellTextures(vtkRenderer* ren, vtkActor*, vtkCellArray* prims[4], int representation,
538  std::vector<unsigned char>& colors, std::vector<float>& normals, vtkPolyData* pd,
540 
547 
550  std::vector<unsigned char> EdgeValues;
552 
553  // additional picking indirection
558 
560  {
561  public:
566  };
567  std::map<std::string, ExtraAttributeValue> ExtraAttributes;
568 
570 
571  // are we currently drawing spheres/tubes
572  bool DrawingSpheres(vtkOpenGLHelper& cellBO, vtkActor* actor);
573  bool DrawingTubes(vtkOpenGLHelper& cellBO, vtkActor* actor);
575 
576  // get which opengl mode to use to draw the primitive
577  int GetOpenGLMode(int representation, int primType);
578 
579  // get how big to make the points when doing point picking
580  // typically 2 for points, 4 for lines, 6 for surface
581  int GetPointPickingPrimitiveSize(int primType);
582 
583  // used to occasionally invoke timers
584  unsigned int TimerQueryCounter;
585 
586  // stores the mapping from OpenGL primitives IDs (gl_PrimitiveId) to VTK cells IDs
588 
589  // compute and set the maximum point and cell ID used in selection
590  virtual void UpdateMaximumPointCellIds(vtkRenderer* ren, vtkActor* actor);
591 
592  virtual void AddPointIdsToSelectionPrimitives(vtkPolyData* poly, const char* arrayName,
593  unsigned int processId, unsigned int compositeIndex, vtkIdType selectedId);
594  virtual void AddCellIdsToSelectionPrimitives(vtkPolyData* poly, const char* arrayName,
595  unsigned int processId, unsigned int compositeIndex, vtkIdType selectedId);
596 
597  vtkNew<vtkCellArray> SelectionArrays[4];
598 
599  vtkMTimeType EnvironmentTextureTime = 0;
600  vtkTexture* EnvironmentTexture = nullptr;
601 
602 private:
604  void operator=(const vtkOpenGLPolyDataMapper&) = delete;
605 };
606 
607 VTK_ABI_NAMESPACE_END
608 #endif
abstract class specifies interface to map data
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:150
object to represent cell connectivity
Definition: vtkCellArray.h:285
a simple class to control print indentation
Definition: vtkIndent.h:108
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:55
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:140
OpenGL buffer object.
OpenGL rendering utility functions.
PolyDataMapper using OpenGL to render.
virtual void BuildSelectionCache(const char *arrayName, bool selectingPoints, vtkPolyData *poly)
Build the selection cache, used to map value ids to indices values.
void MapDataArrayToMultiTextureAttribute(const char *tname, const char *dataArrayName, int fieldAssociation, int componentno=-1) override
virtual void ReplaceShaderRenderPass(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act, bool prePass)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual void SetLightingShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
Set the shader parameters related to lighting, called by UpdateShader.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
virtual void ReplaceShaderPrimID(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual void AddCellIdsToSelectionPrimitives(vtkPolyData *poly, const char *arrayName, unsigned int processId, unsigned int compositeIndex, vtkIdType selectedId)
virtual std::vector< std::pair< vtkTexture *, std::string > > GetTextures(vtkActor *actor)
virtual void GetShaderTemplate(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Create the basic shaders before replacement.
std::map< const vtkOpenGLHelper *, primitiveInfo > PrimitiveInfo
virtual bool GetNeedToRebuildShaders(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
Does the shader source need to be recomputed.
bool DrawingTubes(vtkOpenGLHelper &cellBO, vtkActor *actor)
vtkOpenGLBufferObject * CellScalarBuffer
virtual void RenderPieceStart(vtkRenderer *ren, vtkActor *act)
Implemented by sub classes.
void RenderPiece(vtkRenderer *ren, vtkActor *act) override
Implemented by sub classes.
void ComputeBounds() override
Called in GetBounds().
std::string GetTextureCoordinateName(const char *tname)
vtkOpenGLRenderTimer * TimerQuery
virtual void BuildIBO(vtkRenderer *ren, vtkActor *act, vtkPolyData *poly)
Build the IBO, called by BuildBufferObjects.
virtual void AddPointIdsToSelectionPrimitives(vtkPolyData *poly, const char *arrayName, unsigned int processId, unsigned int compositeIndex, vtkIdType selectedId)
virtual void ReplaceShaderCustomUniforms(std::map< vtkShader::Type, vtkShader * > shaders, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
bool DrawingTubesOrSpheres(vtkOpenGLHelper &cellBO, vtkActor *actor)
virtual void ReplaceShaderTCoord(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual void UpdateShaders(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
Make sure appropriate shaders are defined, compiled and bound.
virtual void ReplaceShaderLight(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual void ReplaceShaderCoincidentOffset(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
vtkTextureObject * CellScalarTexture
virtual void SetCustomUniforms(vtkOpenGLHelper &cellBO, vtkActor *actor)
Set the value of user-defined uniform variables, called by UpdateShader.
virtual void SetCameraShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
Set the shader parameters related to the Camera, called by UpdateShader.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void ReplaceShaderValues(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates.
virtual bool GetNeedToRebuildBufferObjects(vtkRenderer *ren, vtkActor *act)
Does the VBO/IBO need to be rebuilt.
virtual void SetPropertyShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
Set the shader parameters related to the property, called by UpdateShader.
virtual void ReplaceShaderEdges(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual bool HaveWideLines(vtkRenderer *, vtkActor *)
virtual void BuildShaders(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Build the shader source code, called by UpdateShader.
void AppendCellTextures(vtkRenderer *ren, vtkActor *, vtkCellArray *prims[4], int representation, std::vector< unsigned char > &colors, std::vector< float > &normals, vtkPolyData *pd, vtkOpenGLCellToVTKCellMap *ccmap)
static vtkOpenGLPolyDataMapper * New()
MapperHashType GenerateHash(vtkPolyData *polydata) override
Unique hash based on availability of scalars, normals, tcoords, lookup tables and related attributes ...
vtkTextureObject * CellNormalTexture
virtual void SetMapperShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
Set the shader parameters related to the mapper/input data, called by UpdateShader.
vtkMTimeType GetRenderPassStageMTime(vtkActor *actor, const vtkOpenGLHelper *cellBO)
virtual void UpdateMaximumPointCellIds(vtkRenderer *ren, vtkActor *actor)
bool GetSupportsSelection() override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
bool DrawingSpheres(vtkOpenGLHelper &cellBO, vtkActor *actor)
vtkNew< vtkOpenGLCellToVTKCellMap > CellCellMap
virtual void RenderPieceFinish(vtkRenderer *ren, vtkActor *act)
Implemented by sub classes.
virtual void ReplaceShaderDepth(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
vtkOpenGLTexture * InternalColorTexture
virtual void ReplaceShaderClip(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
int GetPointPickingPrimitiveSize(int primType)
vtkOpenGLBufferObject * CellNormalBuffer
virtual void BuildSelectionIBO(vtkPolyData *poly, std::vector< unsigned int >(&indices)[4], vtkIdType offset)
Build the selection IBO, called by UpdateBufferObjects.
std::vector< unsigned char > EdgeValues
std::map< std::string, ExtraAttributeValue > ExtraAttributes
virtual void RenderPieceDraw(vtkRenderer *ren, vtkActor *act)
Implemented by sub classes.
vtkOpenGLBufferObject * EdgeBuffer
virtual void UpdateCameraShiftScale(vtkRenderer *ren, vtkActor *actor)
void SetVBOShiftScaleMethod(int method) override
A convenience method for enabling/disabling the VBO's shift+scale transform.
virtual unsigned int GetNumberOfTextures(vtkActor *actor)
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 ...
virtual void ReplaceShaderPositionVC(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
virtual void ReplaceShaderNormal(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
vtkNew< vtkTransform > VBOInverseTransform
vtkOpenGLVertexBufferObjectGroup * VBOs
void MapDataArray(const char *vertexAttributeName, const char *dataArrayName, const char *texturename, int fieldAssociation, int componentno)
virtual bool DrawingEdges(vtkRenderer *, vtkActor *)
vtkNew< vtkMatrix4x4 > VBOShiftScale
virtual void BuildBufferObjects(vtkRenderer *ren, vtkActor *act)
Build the VBO/IBO, called by UpdateBufferObjects.
vtkGenericOpenGLResourceFreeCallback * ResourceCallback
void RemoveVertexAttributeMapping(const char *vertexAttributeName) override
Remove a vertex attribute mapping.
void MapDataArrayToVertexAttribute(const char *vertexAttributeName, const char *dataArrayName, int fieldAssociation, int componentno=-1) override
Select a data array from the point/cell data and map it to a generic vertex attribute.
virtual void ReplaceShaderPicking(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
void GetCoincidentParameters(vtkRenderer *ren, vtkActor *actor, float &factor, float &offset)
helper function to get the appropriate coincident params
void ShallowCopy(vtkAbstractMapper *m) override
Make a shallow copy of this mapper.
virtual bool HaveTCoords(vtkPolyData *poly)
int GetOpenGLMode(int representation, int primType)
virtual void ReplaceShaderColor(std::map< vtkShader::Type, vtkShader * > shaders, vtkRenderer *ren, vtkActor *act)
Perform string replacements on the shader templates, called from ReplaceShaderValues.
void RemoveAllVertexAttributeMappings() override
Remove all vertex attributes.
~vtkOpenGLPolyDataMapper() override
std::map< std::tuple< unsigned int, unsigned int, vtkIdType >, std::vector< vtkIdType > > SelectionCache
virtual bool HaveTextures(vtkActor *actor)
virtual void UpdateBufferObjects(vtkRenderer *ren, vtkActor *act)
Update the VBO/IBO to be current.
virtual void BuildCellTextures(vtkRenderer *ren, vtkActor *, vtkCellArray *prims[4], int representation)
Asynchronously measures GPU execution time for a single event.
represent GPU shader properties
OpenGL texture map.
manage vertex buffer objects shared within a mapper
represent and manipulate 3D points
Definition: vtkPoints.h:138
map vtkPolyData to graphics primitives
std::uintptr_t MapperHashType
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:180
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:65
abstract specification for renderers
Definition: vtkRenderer.h:171
Class to make storing and comparing state quick and easy.
abstracts an OpenGL texture object.
handles properties associated with a texture map
Definition: vtkTexture.h:167
record modification and/or execution time
Definition: vtkTimeStamp.h:44
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:159
window superclass for vtkRenderWindow
Definition: vtkWindow.h:47
@ offset
Definition: vtkX3D.h:438
@ string
Definition: vtkX3D.h:490
int vtkIdType
Definition: vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270