21#ifndef vtkPixelBufferObject_h
22#define vtkPixelBufferObject_h
25#include "vtkRenderingOpenGL2Module.h"
28VTK_ABI_NAMESPACE_BEGIN
30class vtkOpenGLExtensionManager;
84 vtkGetMacro(Usage,
int);
85 vtkSetMacro(Usage,
int);
100 unsigned int newdims[3];
101 newdims[0] = numtuples;
105 newinc[0] = increment;
108 return this->Upload3D(type, data, newdims, comps, newinc, 0,
nullptr);
123 unsigned int newdims[3];
124 newdims[0] = dims[0];
125 newdims[1] = dims[1];
128 newinc[0] = increments[0];
129 newinc[1] = increments[1];
131 return this->Upload3D(type, data, newdims, comps, newinc, 0,
nullptr);
144 int components,
int* componentList);
152 vtkGetMacro(Type,
int);
153 vtkSetMacro(Type,
int);
160 vtkGetMacro(Components,
int);
161 vtkSetMacro(Components,
int);
169 vtkGetMacro(Size,
unsigned int);
170 vtkSetMacro(Size,
unsigned int);
178 vtkGetMacro(Handle,
unsigned int);
188 unsigned int newdims[3];
193 newincrements[0] = increment;
194 newincrements[1] = 0;
195 newincrements[2] = 0;
196 return this->Download3D(type, data, newdims, numcomps, newincrements);
207 unsigned int newdims[3];
208 newdims[0] = dims[0];
209 newdims[1] = dims[1];
212 newincrements[0] = increments[0];
213 newincrements[1] = increments[1];
214 newincrements[2] = 0;
215 return this->Download3D(type, data, newdims, numcomps, newincrements);
225 int type,
void* data,
unsigned int dims[3],
int numcomps,
vtkIdType increments[3]);
247 return this->MapBuffer(type, numtuples, comps, PACKED_BUFFER);
250 void*
MapPackedBuffer(
unsigned int numbytes) {
return this->MapBuffer(numbytes, PACKED_BUFFER); }
256 return this->MapBuffer(type, numtuples, comps, UNPACKED_BUFFER);
261 return this->MapBuffer(numbytes, UNPACKED_BUFFER);
a simple class to control print indentation
abstract base class for most VTK objects
abstracts an OpenGL pixel buffer object.
void SetSize(unsigned int nTups, int nComps)
Get the size of the data loaded into the PBO mapped memory.
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()
Get/Set the context.
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()
Deactivate 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.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool LoadRequiredExtensions(vtkRenderWindow *renWin)
Loads all required OpenGL extensions.
void * MapBuffer(unsigned int numbytes, BufferType mode)
Map the buffer to our addresspace.
void * MapBuffer(BufferType mode)
Map the buffer to our addresspace.
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)
unsigned int BufferTarget
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.
~vtkPixelBufferObject() override
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.
vtkWeakPointer< vtkRenderWindow > Context
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
a weak reference to a vtkObject.