Go to the documentation of this file.
16 #ifndef vtkOpenGLVolumeOpacityTable_h
17 #define vtkOpenGLVolumeOpacityTable_h
63 double sampleDistance,
69 bool needUpdate =
false;
99 delete [] this->
Table;
114 float* ptr = this->
Table;
115 double factor = sampleDistance/unitDistance;
121 *ptr = static_cast<float>(1.0-pow(1.0-static_cast<double>(*ptr),
131 float* ptr = this->
Table;
132 double factor = sampleDistance/unitDistance;
138 *ptr = static_cast<float>(static_cast<double>(*ptr)*factor);
170 vtkErrorMacro(
"vtkTextureObject not initialized!");
179 vtkErrorMacro(
"Failed to query max texture size! using default 1024.");
183 if (maxWidth >= idealWidth)
189 vtkWarningMacro(
"This OpenGL implementation does not support the required "
190 "texture size of " << idealWidth <<
". Falling back to maximum allowed, "
191 << maxWidth <<
"." <<
"This may cause an incorrect color table mapping.");
227 this->
Table =
nullptr;
241 delete[] this->
Table;
271 this->Tables.reserve(static_cast<size_t>(numberOfTables));
273 for (
unsigned int i = 0; i < numberOfTables; i++)
276 this->Tables.push_back(table);
283 size_t const size = this->Tables.size();
284 for (
size_t i = 0; i <
size; i++)
286 this->Tables[i]->Delete();
294 if (i >= this->Tables.size())
298 return this->Tables[i];
305 return this->Tables.size();
311 size_t const size = this->Tables.size();
312 for (
size_t i = 0; i <
size; ++i)
314 this->Tables[i]->ReleaseGraphicsResources(window);
321 std::vector<vtkOpenGLVolumeOpacityTable*> Tables;
330 #endif // vtkOpenGLVolumeOpacityTable_h
void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
size_t GetNumberOfTables()
void Create(unsigned int numberOfTables)
static int NearestPowerOfTwo(int x)
Compute the nearest power of two that is not less than x.
virtual void SetMinificationFilter(int)
int GetMaximumSupportedTextureWidth(vtkOpenGLRenderWindow *renWin, int idealWidth)
static T Max(const T &a, const T &b)
Returns the maximum of the two arguments provided.
virtual void SetWrapS(int)
record modification and/or execution time
void ReleaseGraphicsResources(vtkWindow *window)
void SetContext(vtkOpenGLRenderWindow *)
Get/Set the context.
abstract base class for most VTK objects
static int GetMaximumTextureSize(vtkOpenGLRenderWindow *context)
Query and return maximum texture size (dimension) supported by the OpenGL driver for a particular con...
virtual void Delete()
Delete a VTK object.
int EstimateMinNumberOfSamples(double const &x1, double const &x2)
Estimates the minimum size of a table such that it would correctly sample this function.
static vtkOpenGLVolumeOpacityTables * New()
int GetTextureUnit()
Return the texture unit used for this texture.
window superclass for vtkRenderWindow
vtkMTimeType GetMTime() override
Data objects are composite objects and need to check each part for MTime.
double LastSampleDistance
void Modified()
Set this objects time to the current time.
virtual vtkMTimeType GetMTime()
Return this object's modified time.
~vtkOpenGLVolumeOpacityTable() override
vtkOpenGLVolumeOpacityTables()=default
void GetTable(double x1, double x2, int size, float *table, int stride=1, int logIncrements=0)
Fills in an array of function values evaluated at regular intervals.
void Deactivate()
Deactivate and UnBind the texture.
abstracts an OpenGL texture object.
static vtkTextureObject * New()
~vtkOpenGLVolumeOpacityTables()
virtual void SetMagnificationFilter(int)
Defines a 1D piecewise function.
void Update(vtkPiecewiseFunction *scalarOpacity, int blendMode, double sampleDistance, double range[2], double unitDistance, int filterValue, vtkOpenGLRenderWindow *renWin)
vtkTextureObject * TextureObject
virtual unsigned int GetHandle()
Returns the OpenGL handle.
vtkOpenGLVolumeOpacityTable * GetTable(unsigned int i)
static vtkOpenGLVolumeOpacityTable * New()
void ReleaseGraphicsResources(vtkWindow *window)
bool Create2DFromRaw(unsigned int width, unsigned int height, int numComps, int dataType, void *data)
Create a 2D texture from client memory numComps must be in [1-4].
void Activate()
Activate and Bind the texture.
vtkOpenGLVolumeOpacityTable(int width=1024)