Go to the documentation of this file.
16 #ifndef vtkVolumeMask_h_
17 #define vtkVolumeMask_h_
21 #include <vtkOpenGLRenderWindow.h>
24 #include <vtkTextureObject.h>
81 const char* arrayName,
84 bool needUpdate =
false;
85 bool modified =
false;
101 int obsolete = needUpdate || !this->
Loaded ||
107 while(!obsolete && i<6)
109 obsolete = obsolete || this->
LoadedExtent[i]>textureExtent[i];
111 obsolete = obsolete || this->
LoadedExtent[i]<textureExtent[i];
120 input->GetDimensions(dim);
132 cout <<
"Mask should be VTK_UNSIGNED_CHAR." << endl;
136 cout <<
"Mask should be a one-component scalar field." << endl;
148 textureSize[i] = textureExtent[2*i+1] - textureExtent[2*i] + 1;
153 glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &
width);
155 textureSize[2] <=
width;
159 this->
Loaded = textureSize[0] * textureSize[1]*
166 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
168 if(!(textureExtent[1]-textureExtent[0]+cellFlag==dim[0]))
170 glPixelStorei(GL_UNPACK_ROW_LENGTH,dim[0]-cellFlag);
172 if(!(textureExtent[3]-textureExtent[2]+cellFlag==dim[1]))
174 glPixelStorei(GL_UNPACK_IMAGE_HEIGHT_EXT,
178 ((textureExtent[4]*(dim[1]-cellFlag)+textureExtent[2]) *
179 (dim[0]-cellFlag)+textureExtent[0]) *
186 textureSize[0], textureSize[1], textureSize[2],
187 1, scalarType, dataPtr);
196 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
197 glPixelStorei(GL_UNPACK_IMAGE_HEIGHT_EXT, 0);
210 input->GetOrigin(origin);
212 swapBounds[0] = (
spacing[0] < 0);
213 swapBounds[1] = (
spacing[1] < 0);
214 swapBounds[2] = (
spacing[2] < 0);
233 this->LoadedBounds[4]=origin[2]+
235 this->LoadedBounds[1]=origin[0]+
237 this->LoadedBounds[3]=origin[1]+
239 this->LoadedBounds[5]=origin[2]+
245 int wholeTextureExtent[6];
246 input->GetExtent(wholeTextureExtent);
250 wholeTextureExtent[i]--;
267 if(this->
LoadedExtent[2*i+1]==wholeTextureExtent[2*i+1])
353 std::map<vtkImageData *,vtkVolumeMask*>
Map;
362 #endif // vtkVolumeMask_h_
void ReleaseGraphicsResources(vtkWindow *win)
virtual void SetBorderColor(float, float, float, float)
vtkTextureObject * Texture
int GetNumberOfComponents()
static vtkDataArray * GetScalars(vtkDataSet *input, int scalarMode, int arrayAccessMode, int arrayId, const char *arrayName, int &cellFlag)
bool Create3DFromRaw(unsigned int width, unsigned int height, unsigned int depth, int numComps, int dataType, void *data)
virtual void SetMinificationFilter(int)
typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target)
virtual void SetWrapS(int)
record modification and/or execution time
void SetFormat(unsigned int glFormat)
void SetInternalFormat(unsigned int glInternalFormat)
abstract superclass for arrays of numeric data
GLenum GLenum GLenum input
void Activate(unsigned int texUnit)
window superclass for vtkRenderWindow
virtual void SetWrapT(int)
void SetContext(vtkRenderWindow *)
virtual void * GetVoidPointer(vtkIdType id)=0
static vtkOpenGLRenderWindow * SafeDownCast(vtkObjectBase *o)
vtkIdType LoadedExtent[6]
vtkIdType * GetLoadedExtent()
virtual int GetDataTypeSize()=0
topologically and geometrically regular array of data
abstracts an OpenGL texture object.
virtual int GetDataType()=0
static vtkTextureObject * New()
#define VTK_UNSIGNED_CHAR
double * GetLoadedBounds()
void Deactivate(unsigned int texUnit)
virtual void SetMagnificationFilter(int)
void SetDataType(unsigned int glType)
typedef GLint(APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program
GLint GLint GLsizei width
virtual void SetWrapR(int)
virtual unsigned int GetHandle()
abstract specification for renderers
std::map< vtkImageData *, vtkVolumeMask * > Map
vtkTimeStamp GetBuildTime()
void ReleaseGraphicsResources(vtkWindow *window)
vtkRenderWindow * GetRenderWindow()
GLuint GLuint GLsizei GLenum type
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
void Update(vtkRenderer *ren, vtkImageData *input, int cellFlag, int textureExtent[6], int scalarMode, int arrayAccessMode, int arrayId, const char *arrayName, vtkIdType maxMemoryInBytes)
unsigned long int GetMTime()