VTK
|
abstracts an OpenGL pixel buffer object. More...
#include <vtkPixelBufferObject.h>
Public Types | |
enum | { StreamDraw = 0, StreamRead, StreamCopy, StaticDraw, StaticRead, StaticCopy, DynamicDraw, DynamicRead, DynamicCopy, NumberOfUsages } |
enum | BufferType { UNPACKED_BUFFER = 0, PACKED_BUFFER } |
typedef vtkObject | Superclass |
Public Member Functions | |
virtual int | IsA (const char *type) |
vtkPixelBufferObject * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) |
void | BindToUnPackedBuffer () |
void | UnBind () |
void * | MapPackedBuffer (int type, unsigned int numtuples, int comps) |
void * | MapPackedBuffer (unsigned int numbytes) |
void * | MapUnpackedBuffer () |
void * | MapUnpackedBuffer (int type, unsigned int numtuples, int comps) |
void * | MapUnpackedBuffer (unsigned int numbytes) |
void | UnmapPackedBuffer () |
void | Bind (BufferType buffer) |
void | UnmapBuffer (BufferType mode) |
void | ReleaseMemory () |
void | SetContext (vtkRenderWindow *context) |
vtkRenderWindow * | GetContext () |
virtual int | GetUsage () |
virtual void | SetUsage (int) |
bool | Upload1D (int type, void *data, unsigned int numtuples, int comps, vtkIdType increment) |
bool | Upload2D (int type, void *data, unsigned int dims[2], int comps, vtkIdType increments[2]) |
bool | Upload3D (int type, void *data, unsigned int dims[3], int comps, vtkIdType increments[3], int components, int *componentList) |
virtual int | GetType () |
virtual void | SetType (int) |
virtual int | GetComponents () |
virtual void | SetComponents (int) |
virtual unsigned int | GetSize () |
virtual void | SetSize (unsigned int) |
void | SetSize (unsigned int nTups, int nComps) |
virtual unsigned int | GetHandle () |
bool | Download1D (int type, void *data, unsigned int dim, int numcomps, vtkIdType increment) |
bool | Download2D (int type, void *data, unsigned int dims[2], int numcomps, vtkIdType increments[2]) |
bool | Download3D (int type, void *data, unsigned int dims[3], int numcomps, vtkIdType increments[3]) |
void | BindToPackedBuffer () |
void * | MapPackedBuffer () |
void | UnmapUnpackedBuffer () |
void * | MapBuffer (int type, unsigned int numtuples, int comps, BufferType mode) |
void * | MapBuffer (unsigned int numbytes, BufferType mode) |
void * | MapBuffer (BufferType mode) |
void | Allocate (int vtkType, unsigned int numtuples, int comps, BufferType mode) |
void | Allocate (unsigned int nbytes, BufferType mode) |
Static Public Member Functions | |
static vtkPixelBufferObject * | New () |
static int | IsTypeOf (const char *type) |
static vtkPixelBufferObject * | SafeDownCast (vtkObjectBase *o) |
static bool | IsSupported (vtkRenderWindow *renWin) |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
vtkPixelBufferObject () | |
~vtkPixelBufferObject () | |
bool | LoadRequiredExtensions (vtkRenderWindow *renWin) |
void | CreateBuffer () |
void | DestroyBuffer () |
Protected Attributes | |
int | Usage |
unsigned int | BufferTarget |
int | Type |
int | Components |
unsigned int | Size |
vtkWeakPointer< vtkRenderWindow > | Context |
unsigned int | Handle |
abstracts an OpenGL pixel buffer object.
Provides low-level access to PBO mapped memory. Used to transfer raw data to/from PBO mapped memory and the application. Once data is transfered to the PBO it can then be transfered to the GPU (eg texture memory). Data may be uploaded from the application into a pixel buffer or downloaded from the pixel bufer to the application. The vtkTextureObject is used to transfer data from/to the PBO to/from texture memory on the GPU.
Definition at line 42 of file vtkPixelBufferObject.h.
Reimplemented from vtkObject.
Definition at line 64 of file vtkPixelBufferObject.h.
anonymous enum |
StreamDraw | |
StreamRead | |
StreamCopy | |
StaticDraw | |
StaticRead | |
StaticCopy | |
DynamicDraw | |
DynamicRead | |
DynamicCopy | |
NumberOfUsages |
Definition at line 48 of file vtkPixelBufferObject.h.
Definition at line 273 of file vtkPixelBufferObject.h.
vtkPixelBufferObject::vtkPixelBufferObject | ( | ) | [protected] |
vtkPixelBufferObject::~vtkPixelBufferObject | ( | ) | [protected] |
static vtkPixelBufferObject* vtkPixelBufferObject::New | ( | ) | [static] |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
Reimplemented from vtkObject.
static int vtkPixelBufferObject::IsTypeOf | ( | const char * | name | ) | [static] |
Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkObject.
virtual int vtkPixelBufferObject::IsA | ( | const char * | name | ) | [virtual] |
Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkObject.
static vtkPixelBufferObject* vtkPixelBufferObject::SafeDownCast | ( | vtkObjectBase * | o | ) | [static] |
Reimplemented from vtkObject.
virtual vtkObjectBase* vtkPixelBufferObject::NewInstanceInternal | ( | ) | const [protected, virtual] |
Reimplemented from vtkObject.
Reimplemented from vtkObject.
void vtkPixelBufferObject::PrintSelf | ( | ostream & | os, |
vtkIndent | indent | ||
) | [virtual] |
void vtkPixelBufferObject::SetContext | ( | vtkRenderWindow * | context | ) |
Get/Set the context. Context must be a vtkOpenGLRenderWindow. This does not increase the reference count of the context to avoid reference loops. SetContext() may raise an error is the OpenGL context does not support the required OpenGL extensions.
Get/Set the context. Context must be a vtkOpenGLRenderWindow. This does not increase the reference count of the context to avoid reference loops. SetContext() may raise an error is the OpenGL context does not support the required OpenGL extensions.
virtual int vtkPixelBufferObject::GetUsage | ( | ) | [virtual] |
Usage is a performance hint. Valid values are: - StreamDraw specified once by A, used few times S - StreamRead specified once by R, queried a few times by A - StreamCopy specified once by R, used a few times S
virtual void vtkPixelBufferObject::SetUsage | ( | int | ) | [virtual] |
Usage is a performance hint. Valid values are: - StreamDraw specified once by A, used few times S - StreamRead specified once by R, queried a few times by A - StreamCopy specified once by R, used a few times S
bool vtkPixelBufferObject::Upload1D | ( | int | type, |
void * | data, | ||
unsigned int | numtuples, | ||
int | comps, | ||
vtkIdType | increment | ||
) | [inline] |
Upload data to PBO mapped. The input data can be freed after this call. The data ptr is treated as an 1D array with the given number of tuples and given number of components in each tuple to be copied to the PBO mapped. increment is the offset added after the last component in each tuple is transferred. Look at the documentation for ContinuousIncrements in vtkImageData for details about how increments are specified.
Definition at line 100 of file vtkPixelBufferObject.h.
bool vtkPixelBufferObject::Upload2D | ( | int | type, |
void * | data, | ||
unsigned int | dims[2], | ||
int | comps, | ||
vtkIdType | increments[2] | ||
) | [inline] |
Update data to PBO mapped sourcing it from a 2D array. The input data can be freed after this call. The data ptr is treated as a 2D array with increments indicating how to iterate over the data. Look at the documentation for ContinuousIncrements in vtkImageData for details about how increments are specified.
Definition at line 121 of file vtkPixelBufferObject.h.
bool vtkPixelBufferObject::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. The input data can be freed after this call. The data ptr is treated as a 3D array with increments indicating how to iterate over the data. Look at the documentation for ContinuousIncrements in vtkImageData for details about how increments are specified.
virtual int vtkPixelBufferObject::GetType | ( | ) | [virtual] |
Get the type with which the data is loaded into the PBO mapped. eg. VTK_FLOAT for float32, VTK_CHAR for byte, VTK_UNSIGNED_CHAR for unsigned byte etc.
virtual void vtkPixelBufferObject::SetType | ( | int | ) | [virtual] |
Get the type with which the data is loaded into the PBO mapped. eg. VTK_FLOAT for float32, VTK_CHAR for byte, VTK_UNSIGNED_CHAR for unsigned byte etc.
virtual int vtkPixelBufferObject::GetComponents | ( | ) | [virtual] |
Get the number of components used to initialize the buffer.
virtual void vtkPixelBufferObject::SetComponents | ( | int | ) | [virtual] |
Get the number of components used to initialize the buffer.
virtual unsigned int vtkPixelBufferObject::GetSize | ( | ) | [virtual] |
Get the size of the data loaded into the PBO mapped memory. Size is in the number of elements of the uploaded Type.
virtual void vtkPixelBufferObject::SetSize | ( | unsigned | int | ) | [virtual] |
Get the size of the data loaded into the PBO mapped memory. Size is in the number of elements of the uploaded Type.
void vtkPixelBufferObject::SetSize | ( | unsigned int | nTups, |
int | nComps | ||
) |
Get the size of the data loaded into the PBO mapped memory. Size is in the number of elements of the uploaded Type.
virtual unsigned int vtkPixelBufferObject::GetHandle | ( | ) | [virtual] |
Get the openGL buffer handle.
bool vtkPixelBufferObject::Download1D | ( | int | type, |
void * | data, | ||
unsigned int | dim, | ||
int | numcomps, | ||
vtkIdType | increment | ||
) | [inline] |
Download data from pixel buffer to the 1D array. The length of the array must be equal to the size of the data in the memory.
Definition at line 181 of file vtkPixelBufferObject.h.
bool vtkPixelBufferObject::Download2D | ( | int | type, |
void * | data, | ||
unsigned int | dims[2], | ||
int | numcomps, | ||
vtkIdType | increments[2] | ||
) | [inline] |
Download data from pixel buffer to the 2D array. (lengthx * lengthy) must be equal to the size of the data in the memory.
Definition at line 201 of file vtkPixelBufferObject.h.
bool vtkPixelBufferObject::Download3D | ( | int | type, |
void * | data, | ||
unsigned int | dims[3], | ||
int | numcomps, | ||
vtkIdType | increments[3] | ||
) |
Download data from pixel buffer to the 3D array. (lengthx * lengthy * lengthz) must be equal to the size of the data in the memory.
void vtkPixelBufferObject::BindToPackedBuffer | ( | ) | [inline] |
Convenience methods for binding.
Definition at line 228 of file vtkPixelBufferObject.h.
void vtkPixelBufferObject::BindToUnPackedBuffer | ( | ) | [inline] |
Definition at line 232 of file vtkPixelBufferObject.h.
void vtkPixelBufferObject::UnBind | ( | ) |
Inactivate the buffer.
void* vtkPixelBufferObject::MapPackedBuffer | ( | ) | [inline] |
Convenience api for mapping buffers to app address space. See also MapBuffer.
Definition at line 241 of file vtkPixelBufferObject.h.
void* vtkPixelBufferObject::MapPackedBuffer | ( | int | type, |
unsigned int | numtuples, | ||
int | comps | ||
) | [inline] |
Definition at line 245 of file vtkPixelBufferObject.h.
void* vtkPixelBufferObject::MapPackedBuffer | ( | unsigned int | numbytes | ) | [inline] |
Definition at line 248 of file vtkPixelBufferObject.h.
void* vtkPixelBufferObject::MapUnpackedBuffer | ( | ) | [inline] |
Definition at line 251 of file vtkPixelBufferObject.h.
void* vtkPixelBufferObject::MapUnpackedBuffer | ( | int | type, |
unsigned int | numtuples, | ||
int | comps | ||
) | [inline] |
Definition at line 254 of file vtkPixelBufferObject.h.
void* vtkPixelBufferObject::MapUnpackedBuffer | ( | unsigned int | numbytes | ) | [inline] |
Definition at line 257 of file vtkPixelBufferObject.h.
void vtkPixelBufferObject::UnmapUnpackedBuffer | ( | ) | [inline] |
Convenience api for unmapping buffers from app address space. See also UnmapBuffer.
Definition at line 263 of file vtkPixelBufferObject.h.
void vtkPixelBufferObject::UnmapPackedBuffer | ( | ) | [inline] |
Definition at line 267 of file vtkPixelBufferObject.h.
void vtkPixelBufferObject::Bind | ( | BufferType | buffer | ) |
Make the buffer active.
void* vtkPixelBufferObject::MapBuffer | ( | int | type, |
unsigned int | numtuples, | ||
int | comps, | ||
BufferType | mode | ||
) |
Map the buffer to our addresspace. Returns a pointer to the mapped memory for read/write access. If type, tuples and components are specified new buffer data will be allocated, else the current allocation is mapped. When finished call UnmapBuffer.
void* vtkPixelBufferObject::MapBuffer | ( | unsigned int | numbytes, |
BufferType | mode | ||
) |
Map the buffer to our addresspace. Returns a pointer to the mapped memory for read/write access. If type, tuples and components are specified new buffer data will be allocated, else the current allocation is mapped. When finished call UnmapBuffer.
void* vtkPixelBufferObject::MapBuffer | ( | BufferType | mode | ) |
Map the buffer to our addresspace. Returns a pointer to the mapped memory for read/write access. If type, tuples and components are specified new buffer data will be allocated, else the current allocation is mapped. When finished call UnmapBuffer.
void vtkPixelBufferObject::UnmapBuffer | ( | BufferType | mode | ) |
Un-map the buffer from our address space, OpenGL can then use/reclaim the buffer contents.
void vtkPixelBufferObject::Allocate | ( | int | vtkType, |
unsigned int | numtuples, | ||
int | comps, | ||
BufferType | mode | ||
) |
Allocate PACKED/UNPACKED memory to hold numTuples*numComponents of vtkType.
void vtkPixelBufferObject::Allocate | ( | unsigned int | nbytes, |
BufferType | mode | ||
) |
Allocate PACKED/UNPACKED memory to hold nBytes of data.
void vtkPixelBufferObject::ReleaseMemory | ( | ) |
Release the memory allocated without destroying the PBO handle.
static bool vtkPixelBufferObject::IsSupported | ( | vtkRenderWindow * | renWin | ) | [static] |
Returns if the context supports the required extensions. Extension will be loaded when the conetxt is set.
bool vtkPixelBufferObject::LoadRequiredExtensions | ( | vtkRenderWindow * | renWin | ) | [protected] |
Loads all required OpenGL extensions. Must be called every time a new context is set.
void vtkPixelBufferObject::CreateBuffer | ( | ) | [protected] |
Create the pixel buffer object.
void vtkPixelBufferObject::DestroyBuffer | ( | ) | [protected] |
Destroys the pixel buffer object.
int vtkPixelBufferObject::Usage [protected] |
Definition at line 335 of file vtkPixelBufferObject.h.
unsigned int vtkPixelBufferObject::BufferTarget [protected] |
Definition at line 336 of file vtkPixelBufferObject.h.
int vtkPixelBufferObject::Type [protected] |
Definition at line 337 of file vtkPixelBufferObject.h.
int vtkPixelBufferObject::Components [protected] |
Definition at line 338 of file vtkPixelBufferObject.h.
unsigned int vtkPixelBufferObject::Size [protected] |
Definition at line 339 of file vtkPixelBufferObject.h.
vtkWeakPointer<vtkRenderWindow> vtkPixelBufferObject::Context [protected] |
Definition at line 340 of file vtkPixelBufferObject.h.
unsigned int vtkPixelBufferObject::Handle [protected] |
Definition at line 341 of file vtkPixelBufferObject.h.