VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkOpenGLPolyDataMapper2D.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00026 #ifndef vtkOpenGLPolyDataMapper2D_h 00027 #define vtkOpenGLPolyDataMapper2D_h 00028 00029 #include "vtkRenderingOpenGL2Module.h" // For export macro 00030 #include "vtkPolyDataMapper2D.h" 00031 #include "vtkglVBOHelper.h" // used for ivars 00032 00033 class vtkRenderer; 00034 class vtkPoints; 00035 00036 namespace vtkgl {class CellBO; } 00037 00038 class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLPolyDataMapper2D : public vtkPolyDataMapper2D 00039 { 00040 public: 00041 vtkTypeMacro(vtkOpenGLPolyDataMapper2D, vtkPolyDataMapper2D); 00042 static vtkOpenGLPolyDataMapper2D *New(); 00043 virtual void PrintSelf(ostream& os, vtkIndent indent); 00044 00046 void RenderOverlay(vtkViewport* viewport, vtkActor2D* actor); 00047 00051 void ReleaseGraphicsResources(vtkWindow *); 00052 00053 protected: 00054 vtkOpenGLPolyDataMapper2D(); 00055 ~vtkOpenGLPolyDataMapper2D(); 00056 00058 virtual bool GetNeedToRebuildShader(vtkgl::CellBO &cellBO, vtkViewport *ren, vtkActor2D *act); 00059 00061 00062 virtual void BuildShader(std::string &VertexCode, 00063 std::string &fragmentCode, 00064 std::string &geometryCode, 00065 vtkViewport *ren, vtkActor2D *act); 00067 00069 virtual void UpdateShader(vtkgl::CellBO &cellBO, vtkViewport *viewport, vtkActor2D *act); 00070 00073 virtual void SetMapperShaderParameters(vtkgl::CellBO &cellBO, vtkViewport *ren, vtkActor2D *act); 00074 00075 00077 void SetCameraShaderParameters(vtkgl::CellBO &cellBO, vtkViewport *viewport, vtkActor2D *act); 00078 00080 void SetPropertyShaderParameters(vtkgl::CellBO &cellBO, vtkViewport *viewport, vtkActor2D *act); 00081 00083 void UpdateVBO(vtkActor2D *act, vtkViewport *viewport); 00084 00085 // The VBO and its layout. 00086 vtkgl::BufferObject VBO; 00087 vtkgl::VBOLayout Layout; 00088 00089 // Structures for the various cell types we render. 00090 vtkgl::CellBO Points; 00091 vtkgl::CellBO Lines; 00092 vtkgl::CellBO Tris; 00093 vtkgl::CellBO TriStrips; 00094 00095 vtkTimeStamp VBOUpdateTime; // When was the VBO updated? 00096 vtkPoints *TransformedPoints; 00097 00098 private: 00099 vtkOpenGLPolyDataMapper2D(const vtkOpenGLPolyDataMapper2D&); // Not implemented. 00100 void operator=(const vtkOpenGLPolyDataMapper2D&); // Not implemented. 00101 }; 00102 00103 #endif