VTK
vtkPixelBufferObject.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPixelBufferObject.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 =========================================================================*/
32 #ifndef vtkPixelBufferObject_h
33 #define vtkPixelBufferObject_h
34 
35 #include "vtkObject.h"
36 #include "vtkRenderingOpenGLModule.h" // For export macro
37 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
38 
39 class vtkRenderWindow;
41 
43 {
44 public:
45 
46  //BTX
47  // Usage values.
48  enum
49  {
50  StreamDraw=0,
59  NumberOfUsages
60  };
61  //ETX
62 
65  void PrintSelf(ostream& os, vtkIndent indent);
66 
68 
72  void SetContext(vtkRenderWindow* context);
75 
77 
88  vtkGetMacro(Usage,int);
89  vtkSetMacro(Usage,int);
91 
93 
100  bool Upload1D(int type, void* data,
101  unsigned int numtuples, int comps, vtkIdType increment)
102  {
103  unsigned int newdims[3];
104  newdims[0] = numtuples;
105  newdims[1] = 1;
106  newdims[2] = 1;
107  vtkIdType newinc[3];
108  newinc[0] = increment;
109  newinc[1] = 0;
110  newinc[2] = 0;
111  return this->Upload3D(type, data, newdims, comps, newinc,0,0);
112  }
114 
116 
121  bool Upload2D(int type, void* data,
122  unsigned int dims[2],
123  int comps,
124  vtkIdType increments[2])
125  {
126  unsigned int newdims[3];
127  newdims[0] = dims[0];
128  newdims[1] = dims[1];
129  newdims[2] = 1;
130  vtkIdType newinc[3];
131  newinc[0] = increments[0];
132  newinc[1] = increments[1];
133  newinc[2] = 0;
134  return this->Upload3D(type, data, newdims, comps, newinc,0,0);
135  }
137 
139 
144  bool Upload3D(int type, void* data,
145  unsigned int dims[3], int comps,
146  vtkIdType increments[3],
147  int components,
148  int *componentList);
150 
152 
155  vtkGetMacro(Type, int);
156  vtkSetMacro(Type, int);
158 
160 
161  vtkGetMacro(Components, int);
162  vtkSetMacro(Components, int);
164 
166 
168  vtkGetMacro(Size, unsigned int);
169  vtkSetMacro(Size, unsigned int);
170  void SetSize(unsigned int nTups, int nComps);
172 
174 
175  vtkGetMacro(Handle, unsigned int);
177 
179 
182  int type, void* data,
183  unsigned int dim,
184  int numcomps, vtkIdType increment)
185  {
186  unsigned int newdims[3];
187  newdims[0] = dim;
188  newdims[1] = 1;
189  newdims[2] = 1;
190  vtkIdType newincrements[3];
191  newincrements[0] = increment;
192  newincrements[1] = 0;
193  newincrements[2] = 0;
194  return this->Download3D(type, data, newdims, numcomps, newincrements);
195  }
197 
199 
202  int type, void* data,
203  unsigned int dims[2],
204  int numcomps, vtkIdType increments[2])
205  {
206  unsigned int newdims[3];
207  newdims[0] = dims[0];
208  newdims[1] = dims[1];
209  newdims[2] = 1;
210  vtkIdType newincrements[3];
211  newincrements[0] = increments[0];
212  newincrements[1] = increments[1];
213  newincrements[2] = 0;
214  return this->Download3D(type, data, newdims, numcomps, newincrements);
215  }
217 
219 
221  bool Download3D(int type, void* data,
222  unsigned int dims[3],
223  int numcomps, vtkIdType increments[3]);
225 
227 
229  { this->Bind(PACKED_BUFFER); }
231 
233  { this->Bind(UNPACKED_BUFFER); }
234 
236  void UnBind();
237 
239 
242  { return this->MapBuffer(PACKED_BUFFER); }
244 
245  void *MapPackedBuffer(int type, unsigned int numtuples, int comps)
246  { return this->MapBuffer(type, numtuples, comps, PACKED_BUFFER); }
247 
248  void *MapPackedBuffer(unsigned int numbytes)
249  { return this->MapBuffer(numbytes, PACKED_BUFFER); }
250 
252  { return this->MapBuffer(UNPACKED_BUFFER); }
253 
254  void *MapUnpackedBuffer(int type, unsigned int numtuples, int comps)
255  { return this->MapBuffer(type, numtuples, comps, UNPACKED_BUFFER); }
256 
257  void *MapUnpackedBuffer(unsigned int numbytes)
258  { return this->MapBuffer(numbytes, UNPACKED_BUFFER); }
259 
261 
264  { this->UnmapBuffer(UNPACKED_BUFFER); }
266 
268  { this->UnmapBuffer(PACKED_BUFFER); }
269 
270 //BTX
271  // PACKED_BUFFER for download APP<-PBO
272  // UNPACKED_BUFFER for upload APP->PBO
274  UNPACKED_BUFFER=0,
275  PACKED_BUFFER
276  };
277 
280 
282 
286  void *MapBuffer(int type, unsigned int numtuples, int comps, BufferType mode);
287  void *MapBuffer(unsigned int numbytes, BufferType mode);
290 
294 
296 
298  void Allocate(
299  int vtkType,
300  unsigned int numtuples,
301  int comps,
302  BufferType mode);
304 
306 
307  void Allocate(
308  unsigned int nbytes,
309  BufferType mode);
311 
314 
317  static bool IsSupported(vtkRenderWindow* renWin);
318 
319 //ETX
320 //BTX
321 protected:
324 
328 
330  void CreateBuffer();
331 
334 
335  int Usage;
336  unsigned int BufferTarget; // GLenum
337  int Type;
339  unsigned int Size;
341  unsigned int Handle;
342 private:
343  vtkPixelBufferObject(const vtkPixelBufferObject&); // Not implemented.
344  void operator=(const vtkPixelBufferObject&); // Not implemented.
345  //ETX
346 };
347 
348 #endif
vtkPixelBufferObject::StreamRead
@ StreamRead
Definition: vtkPixelBufferObject.h:51
vtkgl::data
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: vtkgl.h:11339
vtkPixelBufferObject::Download1D
bool Download1D(int type, void *data, unsigned int dim, int numcomps, vtkIdType increment)
Definition: vtkPixelBufferObject.h:181
vtkPixelBufferObject::BindToPackedBuffer
void BindToPackedBuffer()
Definition: vtkPixelBufferObject.h:228
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkPixelBufferObject::StaticDraw
@ StaticDraw
Definition: vtkPixelBufferObject.h:53
vtkPixelBufferObject::Upload3D
bool Upload3D(int type, void *data, unsigned int dims[3], int comps, vtkIdType increments[3], int components, int *componentList)
vtkPixelBufferObject::Upload2D
bool Upload2D(int type, void *data, unsigned int dims[2], int comps, vtkIdType increments[2])
Definition: vtkPixelBufferObject.h:121
vtkPixelBufferObject::Context
vtkWeakPointer< vtkRenderWindow > Context
Definition: vtkPixelBufferObject.h:340
vtkPixelBufferObject::StaticRead
@ StaticRead
Definition: vtkPixelBufferObject.h:54
vtkRenderingOpenGLModule.h
vtkPixelBufferObject::MapBuffer
void * MapBuffer(int type, unsigned int numtuples, int comps, BufferType mode)
vtkPixelBufferObject::DynamicDraw
@ DynamicDraw
Definition: vtkPixelBufferObject.h:56
vtkPixelBufferObject::IsSupported
static bool IsSupported(vtkRenderWindow *renWin)
vtkPixelBufferObject::Allocate
void Allocate(unsigned int nbytes, BufferType mode)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkPixelBufferObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkPixelBufferObject::DynamicRead
@ DynamicRead
Definition: vtkPixelBufferObject.h:57
vtkPixelBufferObject::Allocate
void Allocate(int vtkType, unsigned int numtuples, int comps, BufferType mode)
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkPixelBufferObject::MapPackedBuffer
void * MapPackedBuffer()
Definition: vtkPixelBufferObject.h:241
vtkPixelBufferObject::MapUnpackedBuffer
void * MapUnpackedBuffer(int type, unsigned int numtuples, int comps)
Definition: vtkPixelBufferObject.h:254
vtkPixelBufferObject::New
static vtkPixelBufferObject * New()
vtkPixelBufferObject::SetSize
void SetSize(unsigned int nTups, int nComps)
vtkPixelBufferObject::Download2D
bool Download2D(int type, void *data, unsigned int dims[2], int numcomps, vtkIdType increments[2])
Definition: vtkPixelBufferObject.h:201
vtkPixelBufferObject::LoadRequiredExtensions
bool LoadRequiredExtensions(vtkRenderWindow *renWin)
vtkPixelBufferObject::UnmapPackedBuffer
void UnmapPackedBuffer()
Definition: vtkPixelBufferObject.h:267
vtkPixelBufferObject::Download3D
bool Download3D(int type, void *data, unsigned int dims[3], int numcomps, vtkIdType increments[3])
vtkPixelBufferObject::UnmapBuffer
void UnmapBuffer(BufferType mode)
vtkPixelBufferObject::StreamCopy
@ StreamCopy
Definition: vtkPixelBufferObject.h:52
vtkPixelBufferObject::CreateBuffer
void CreateBuffer()
vtkOpenGLExtensionManager
Interface class for querying and using OpenGL extensions.
vtkPixelBufferObject::DestroyBuffer
void DestroyBuffer()
vtkPixelBufferObject::Bind
void Bind(BufferType buffer)
vtkPixelBufferObject::Components
int Components
Definition: vtkPixelBufferObject.h:338
vtkPixelBufferObject::BufferType
BufferType
Definition: vtkPixelBufferObject.h:273
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkPixelBufferObject::Handle
unsigned int Handle
Definition: vtkPixelBufferObject.h:341
vtkPixelBufferObject::ReleaseMemory
void ReleaseMemory()
vtkPixelBufferObject::MapPackedBuffer
void * MapPackedBuffer(int type, unsigned int numtuples, int comps)
Definition: vtkPixelBufferObject.h:245
vtkPixelBufferObject::MapBuffer
void * MapBuffer(unsigned int numbytes, BufferType mode)
vtkWeakPointer.h
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkPixelBufferObject::GetContext
vtkRenderWindow * GetContext()
vtkPixelBufferObject::MapUnpackedBuffer
void * MapUnpackedBuffer(unsigned int numbytes)
Definition: vtkPixelBufferObject.h:257
vtkPixelBufferObject::MapPackedBuffer
void * MapPackedBuffer(unsigned int numbytes)
Definition: vtkPixelBufferObject.h:248
vtkObject.h
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkPixelBufferObject::UnBind
void UnBind()
vtkPixelBufferObject::MapUnpackedBuffer
void * MapUnpackedBuffer()
Definition: vtkPixelBufferObject.h:251
vtkgl::buffer
GLuint buffer
Definition: vtkgl.h:11839
vtkPixelBufferObject::DynamicCopy
@ DynamicCopy
Definition: vtkPixelBufferObject.h:58
vtkPixelBufferObject::Size
unsigned int Size
Definition: vtkPixelBufferObject.h:339
vtkPixelBufferObject::BindToUnPackedBuffer
void BindToUnPackedBuffer()
Definition: vtkPixelBufferObject.h:232
vtkPixelBufferObject::Type
int Type
Definition: vtkPixelBufferObject.h:337
vtkPixelBufferObject::BufferTarget
unsigned int BufferTarget
Definition: vtkPixelBufferObject.h:336
vtkPixelBufferObject::UnmapUnpackedBuffer
void UnmapUnpackedBuffer()
Definition: vtkPixelBufferObject.h:263
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:89
vtkPixelBufferObject::MapBuffer
void * MapBuffer(BufferType mode)
vtkgl::components
GLenum GLenum GLuint components
Definition: vtkgl.h:16909
vtkPixelBufferObject::Upload1D
bool Upload1D(int type, void *data, unsigned int numtuples, int comps, vtkIdType increment)
Definition: vtkPixelBufferObject.h:100
vtkPixelBufferObject::Usage
int Usage
Definition: vtkPixelBufferObject.h:335
vtkgl::mode
GLenum mode
Definition: vtkgl.h:12325
vtkgl::type
GLuint GLuint GLsizei GLenum type
Definition: vtkgl.h:11315
vtkgl::UnmapBuffer
VTKRENDERINGOPENGL_EXPORT PFNGLUNMAPBUFFERPROC UnmapBuffer
vtkPixelBufferObject::~vtkPixelBufferObject
~vtkPixelBufferObject()
vtkPixelBufferObject::SetContext
void SetContext(vtkRenderWindow *context)
vtkPixelBufferObject
abstracts an OpenGL pixel buffer object.
Definition: vtkPixelBufferObject.h:43
vtkWeakPointer< vtkRenderWindow >
vtkgl::MapBuffer
VTKRENDERINGOPENGL_EXPORT PFNGLMAPBUFFERPROC MapBuffer
vtkPixelBufferObject::vtkPixelBufferObject
vtkPixelBufferObject()
VTKRENDERINGOPENGL_EXPORT
#define VTKRENDERINGOPENGL_EXPORT
Definition: vtkRenderingOpenGLModule.h:15
vtkPixelBufferObject::StaticCopy
@ StaticCopy
Definition: vtkPixelBufferObject.h:55