33#ifndef vtkPixelBufferObject_h
34#define vtkPixelBufferObject_h
37#include "vtkRenderingOpenGL2Module.h"
96 vtkGetMacro(Usage,
int);
111 unsigned int numtuples,
int comps,
vtkIdType increment)
113 unsigned int newdims[3];
114 newdims[0] = numtuples;
118 newinc[0] = increment;
121 return this->Upload3D(
type,
data, newdims, comps, newinc,0,0);
135 unsigned int dims[2],
139 unsigned int newdims[3];
140 newdims[0] = dims[0];
141 newdims[1] = dims[1];
144 newinc[0] = increments[0];
145 newinc[1] = increments[1];
147 return this->Upload3D(
type,
data, newdims, comps, newinc,0,0);
160 unsigned int dims[3],
int comps,
171 vtkGetMacro(Type,
int);
179 vtkGetMacro(Components,
int);
188 vtkGetMacro(Size,
unsigned int);
197 vtkGetMacro(Handle,
unsigned int);
210 unsigned int newdims[3];
215 newincrements[0] = increment;
216 newincrements[1] = 0;
217 newincrements[2] = 0;
218 return this->Download3D(
type,
data, newdims, numcomps, newincrements);
229 unsigned int dims[2],
232 unsigned int newdims[3];
233 newdims[0] = dims[0];
234 newdims[1] = dims[1];
237 newincrements[0] = increments[0];
238 newincrements[1] = increments[1];
239 newincrements[2] = 0;
240 return this->Download3D(
type,
data, newdims, numcomps, newincrements);
250 unsigned int dims[3],
257 { this->Bind(PACKED_BUFFER); }
260 { this->Bind(UNPACKED_BUFFER); }
272 {
return this->MapBuffer(PACKED_BUFFER); }
275 {
return this->MapBuffer(
type, numtuples, comps, PACKED_BUFFER); }
278 {
return this->MapBuffer(numbytes, PACKED_BUFFER); }
281 {
return this->MapBuffer(UNPACKED_BUFFER); }
284 {
return this->MapBuffer(
type, numtuples, comps, UNPACKED_BUFFER); }
287 {
return this->MapBuffer(numbytes, UNPACKED_BUFFER); }
294 { this->UnmapBuffer(UNPACKED_BUFFER); }
297 { this->UnmapBuffer(PACKED_BUFFER); }
334 unsigned int numtuples,
377 unsigned int BufferTarget;
a simple class to control print indentation
abstract base class for most VTK objects
Interface class for querying and using OpenGL extensions.
abstracts an OpenGL pixel buffer object.
void SetSize(unsigned int nTups, int nComps)
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
static bool IsSupported(vtkRenderWindow *renWin)
Returns if the context supports the required extensions.
void * MapBuffer(int type, unsigned int numtuples, int comps, BufferType mode)
Map the buffer to our addresspace.
void DestroyBuffer()
Destroys the pixel buffer object.
vtkRenderWindow * GetContext()
void UnmapUnpackedBuffer()
Convenience api for unmapping buffers from app address space.
void Allocate(unsigned int nbytes, BufferType mode)
Allocate PACKED/UNPACKED memory to hold nBytes of data.
void UnBind()
Inactivate the buffer.
void Bind(BufferType buffer)
Make the buffer active.
bool Download2D(int type, void *data, unsigned int dims[2], int numcomps, vtkIdType increments[2])
Download data from pixel buffer to the 2D array.
bool LoadRequiredExtensions(vtkRenderWindow *renWin)
Loads all required OpenGL extensions.
void * MapBuffer(unsigned int numbytes, BufferType mode)
void * MapBuffer(BufferType mode)
void * MapUnpackedBuffer(int type, unsigned int numtuples, int comps)
bool Download3D(int type, void *data, unsigned int dims[3], int numcomps, vtkIdType increments[3])
Download data from pixel buffer to the 3D array.
void * MapUnpackedBuffer(unsigned int numbytes)
void * MapUnpackedBuffer()
void ReleaseMemory()
Release the memory allocated without destroying the PBO handle.
bool Upload1D(int type, void *data, unsigned int numtuples, int comps, vtkIdType increment)
Upload data to PBO mapped.
void * MapPackedBuffer(int type, unsigned int numtuples, int comps)
void BindToPackedBuffer()
Convenience methods for binding.
void SetContext(vtkRenderWindow *context)
Get/Set the context.
void Allocate(int vtkType, unsigned int numtuples, int comps, BufferType mode)
Allocate PACKED/UNPACKED memory to hold numTuples*numComponents of vtkType.
void CreateBuffer()
Create the pixel buffer object.
void * MapPackedBuffer(unsigned int numbytes)
void UnmapBuffer(BufferType mode)
Un-map the buffer from our address space, OpenGL can then use/reclaim the buffer contents.
bool Download1D(int type, void *data, unsigned int dim, int numcomps, vtkIdType increment)
Download data from pixel buffer to the 1D array.
static vtkPixelBufferObject * New()
void * MapPackedBuffer()
Convenience api for mapping buffers to app address space.
void BindToUnPackedBuffer()
bool Upload3D(int type, void *data, unsigned int dims[3], int comps, vtkIdType increments[3], int components, int *componentList)
Update data to PBO mapped sourcing it from a 3D array.
bool Upload2D(int type, void *data, unsigned int dims[2], int comps, vtkIdType increments[2])
Update data to PBO mapped sourcing it from a 2D array.
create a window for renderers to draw into
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.