VTK
vtkDataTransferHelper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDataTransferHelper.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
31 #ifndef vtkDataTransferHelper_h
32 #define vtkDataTransferHelper_h
33 
34 #include "vtkRenderingOpenGLModule.h" // For export macro
35 #include "vtkObject.h"
36 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
37 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
38 
39 class vtkDataArray;
41 class vtkTextureObject;
43 class vtkRenderWindow;
44 
45 class VTKRENDERINGOPENGL_EXPORT vtkDataTransferHelper : public vtkObject
46 {
47 public:
48  static vtkDataTransferHelper* New();
50  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
51 
53 
60  void SetContext(vtkRenderWindow* context);
61  vtkRenderWindow* GetContext();
63 
65 
75  vtkSetVector6Macro(CPUExtent, int);
76  vtkGetVector6Macro(CPUExtent, int);
78 
80 
87  vtkSetVector6Macro(GPUExtent, int);
88  vtkGetVector6Macro(GPUExtent, int);
90 
92 
99  vtkSetVector6Macro(TextureExtent, int);
100  vtkGetVector6Macro(TextureExtent, int);
102 
108  bool GetExtentIsValid(int *extent);
109 
113  bool GetCPUExtentIsValid();
114 
118  bool GetGPUExtentIsValid();
119 
123  bool GetTextureExtentIsValid();
124 
126 
139  vtkSetMacro(MinTextureDimension,int);
140  vtkGetMacro(MinTextureDimension,int);
142 
144 
147  vtkGetObjectMacro(Array, vtkDataArray);
148  void SetArray(vtkDataArray* array);
150 
152 
155  vtkGetObjectMacro(Texture, vtkTextureObject);
156  void SetTexture(vtkTextureObject* texture);
158 
179  bool Upload(int components=0,
180  int *componentList=NULL);
181 
205  bool Download();
206 
208 
213  bool DownloadAsync1();
214  bool DownloadAsync2();
216 
217  bool GetShaderSupportsTextureInt();
218  void SetShaderSupportsTextureInt(bool value);
219 
223  static bool IsSupported(vtkRenderWindow* renWin);
224 
225 protected:
227  ~vtkDataTransferHelper() VTK_OVERRIDE;
228 
232  bool LoadRequiredExtensions(vtkOpenGLExtensionManager*);
233 
234  int CPUExtent[6];
235  int GPUExtent[6];
236  int TextureExtent[6];
237 
240  vtkDataArray* Array;
241  bool ShaderSupportsTextureInt;
242  int MinTextureDimension;
243 
245 
246  vtkPixelBufferObject* GetPBO();
247 
248  // We try to reuse the PBO if possible.
250 private:
251  vtkDataTransferHelper(const vtkDataTransferHelper&) VTK_DELETE_FUNCTION;
252  void operator=(const vtkDataTransferHelper&) VTK_DELETE_FUNCTION;
253 
254 };
255 
256 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:59
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Hold a reference to a vtkObjectBase instance.
a simple class to control print indentation
Definition: vtkIndent.h:39
a weak reference to a vtkObject.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
abstracts an OpenGL pixel buffer object.
Interface class for querying and using OpenGL extensions.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
abstracts an OpenGL texture object.
create a window for renderers to draw into
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
is a helper class that aids in transferring data between CPU memory and GPU memory.