VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkPixelBufferObject Class Reference

abstracts an OpenGL pixel buffer object. More...

#include <vtkPixelBufferObject.h>

Inheritance diagram for vtkPixelBufferObject:
[legend]
Collaboration diagram for vtkPixelBufferObject:
[legend]

Public Types

enum  {
  StreamDraw = 0, StreamRead, StreamCopy, StaticDraw,
  StaticRead, StaticCopy, DynamicDraw, DynamicRead,
  DynamicCopy, NumberOfUsages
}
enum  BufferType { PACKED_BUFFER, UNPACKED_BUFFER }
typedef vtkObject Superclass
- Public Types inherited from vtkObject
typedef vtkObjectBase Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
void BindToUnPackedBuffer ()
void UnBind ()
void Bind (BufferType buffer)
void ReleaseMemory ()
void SetContext (vtkRenderWindow *context)
vtkRenderWindowGetContext ()
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 unsigned int GetSize ()
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 Allocate (unsigned int size, int type)
- Public Member Functions inherited from vtkObject
virtual void DebugOn ()
virtual void DebugOff ()
unsigned char GetDebug ()
void SetDebug (unsigned char debugFlag)
virtual void Modified ()
virtual unsigned long GetMTime ()
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
vtkCommandGetCommand (unsigned long tag)
void RemoveObserver (vtkCommand *)
void RemoveObservers (unsigned long event, vtkCommand *)
void RemoveObservers (const char *event, vtkCommand *)
int HasObserver (unsigned long event, vtkCommand *)
int HasObserver (const char *event, vtkCommand *)
void RemoveObserver (unsigned long tag)
void RemoveObservers (unsigned long event)
void RemoveObservers (const char *event)
void RemoveAllObservers ()
int HasObserver (unsigned long event)
int HasObserver (const char *event)
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
int InvokeEvent (unsigned long event, void *callData)
int InvokeEvent (const char *event, void *callData)
int InvokeEvent (unsigned long event)
int InvokeEvent (const char *event)
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
virtual void Delete ()
virtual void FastDelete ()
void Print (ostream &os)
virtual void Register (vtkObjectBase *o)
virtual void UnRegister (vtkObjectBase *o)
void SetReferenceCount (int)
void PrintRevisions (ostream &os)
virtual void PrintHeader (ostream &os, vtkIndent indent)
virtual void PrintTrailer (ostream &os, vtkIndent indent)
int GetReferenceCount ()

Static Public Member Functions

static vtkPixelBufferObjectNew ()
static int IsTypeOf (const char *type)
static vtkPixelBufferObjectSafeDownCast (vtkObject *o)
static bool IsSupported (vtkRenderWindow *renWin)
- Static Public Member Functions inherited from vtkObject
static void BreakOnError ()
static void SetGlobalWarningDisplay (int val)
static void GlobalWarningDisplayOn ()
static void GlobalWarningDisplayOff ()
static int GetGlobalWarningDisplay ()

Protected Member Functions

 vtkPixelBufferObject ()
 ~vtkPixelBufferObject ()
bool LoadRequiredExtensions (vtkOpenGLExtensionManager *mgr)
void CreateBuffer ()
void DestroyBuffer ()
- Protected Member Functions inherited from vtkObject
 vtkObject ()
virtual ~vtkObject ()
virtual void RegisterInternal (vtkObjectBase *, int check)
virtual void UnRegisterInternal (vtkObjectBase *, int check)
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
void InternalReleaseFocus ()
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
virtual ~vtkObjectBase ()
virtual void CollectRevisions (ostream &os)
virtual void ReportReferences (vtkGarbageCollector *)
 vtkObjectBase (const vtkObjectBase &)
void operator= (const vtkObjectBase &)

Protected Attributes

int Usage
unsigned int BufferTarget
int Type
unsigned int Size
vtkWeakPointer< vtkRenderWindowContext
unsigned int Handle
- Protected Attributes inherited from vtkObject
unsigned char Debug
vtkTimeStamp MTime
vtkSubjectHelper * SubjectHelper
- Protected Attributes inherited from vtkObjectBase
int ReferenceCount
vtkWeakPointerBase ** WeakPointers

Detailed Description

abstracts an OpenGL pixel buffer object.

Provides low-level access to GPU memory. Used to pass raw data to GPU. The data is uploaded into a pixel buffer.

See Also
OpenGL Pixel Buffer Object Extension Spec (ARB_pixel_buffer_object): http://www.opengl.org/registry/specs/ARB/pixel_buffer_object.txt
Warning
Since most GPUs don't support double format all double data is converted to float and then uploaded. DON'T PLAY WITH IT YET.

Definition at line 38 of file vtkPixelBufferObject.h.

Member Typedef Documentation

Definition at line 60 of file vtkPixelBufferObject.h.

Member Enumeration Documentation

anonymous enum
Enumerator:
StreamDraw 
StreamRead 
StreamCopy 
StaticDraw 
StaticRead 
StaticCopy 
DynamicDraw 
DynamicRead 
DynamicCopy 
NumberOfUsages 

Definition at line 44 of file vtkPixelBufferObject.h.

Enumerator:
PACKED_BUFFER 
UNPACKED_BUFFER 

Definition at line 227 of file vtkPixelBufferObject.h.

Constructor & Destructor Documentation

vtkPixelBufferObject::vtkPixelBufferObject ( )
protected
vtkPixelBufferObject::~vtkPixelBufferObject ( )
protected

Member Function Documentation

static vtkPixelBufferObject* vtkPixelBufferObject::New ( )
static

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

virtual const char* vtkPixelBufferObject::GetClassName ( )
virtual

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 ( vtkObject o)
static

Reimplemented from vtkObject.

void vtkPixelBufferObject::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkObject.

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.

vtkRenderWindow* vtkPixelBufferObject::GetContext ( )

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

  • StaticDraw specified once by A, used many times S - StaticRead specificed once by R, queried many times by A - StaticCopy specified once by R, used many times S - DynamicDraw respecified repeatedly by A, used many times S - DynamicRead respecified repeatedly by R, queried many times by A - DynamicCopy respecified repeatedly by R, used many times S A: the application S: as the source for GL drawing and image specification commands. R: reading data from the GL Initial value is StaticDraw, as in OpenGL spec.
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

  • StaticDraw specified once by A, used many times S - StaticRead specificed once by R, queried many times by A - StaticCopy specified once by R, used many times S - DynamicDraw respecified repeatedly by A, used many times S - DynamicRead respecified repeatedly by R, queried many times by A - DynamicCopy respecified repeatedly by R, used many times S A: the application S: as the source for GL drawing and image specification commands. R: reading data from the GL Initial value is StaticDraw, as in OpenGL spec.
bool vtkPixelBufferObject::Upload1D ( int  type,
void *  data,
unsigned int  numtuples,
int  comps,
vtkIdType  increment 
)
inline

Upload data to GPU. 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 GPU. 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 95 of file vtkPixelBufferObject.h.

bool vtkPixelBufferObject::Upload2D ( int  type,
void *  data,
unsigned int  dims[2],
int  comps,
vtkIdType  increments[2] 
)
inline

Update data to GPU 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 116 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 GPU 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 GPU. eg. VTK_FLOAT for float32, VTK_CHAR for byte, VTK_UNSIGNED_CHAR for unsigned byte etc.

virtual unsigned int vtkPixelBufferObject::GetSize ( )
virtual

Get the size of the data loaded into the GPU. 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 167 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 187 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

For wrapping.

Definition at line 214 of file vtkPixelBufferObject.h.

void vtkPixelBufferObject::BindToUnPackedBuffer ( )
inline

Definition at line 218 of file vtkPixelBufferObject.h.

void vtkPixelBufferObject::UnBind ( )

Inactivate the buffer.

void vtkPixelBufferObject::Bind ( BufferType  buffer)

Make the buffer active.

void vtkPixelBufferObject::Allocate ( unsigned int  size,
int  type 
)

Allocate the memory. size is in number of bytes. type is a VTK type.

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.

bool vtkPixelBufferObject::LoadRequiredExtensions ( vtkOpenGLExtensionManager mgr)
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.

Member Data Documentation

int vtkPixelBufferObject::Usage
protected

Definition at line 263 of file vtkPixelBufferObject.h.

unsigned int vtkPixelBufferObject::BufferTarget
protected

Definition at line 264 of file vtkPixelBufferObject.h.

int vtkPixelBufferObject::Type
protected

Definition at line 265 of file vtkPixelBufferObject.h.

unsigned int vtkPixelBufferObject::Size
protected

Definition at line 266 of file vtkPixelBufferObject.h.

vtkWeakPointer<vtkRenderWindow> vtkPixelBufferObject::Context
protected

Definition at line 267 of file vtkPixelBufferObject.h.

unsigned int vtkPixelBufferObject::Handle
protected

Definition at line 268 of file vtkPixelBufferObject.h.


The documentation for this class was generated from the following file: