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
~vtkOpenGLVolumeOpacityTables()
abstract base class for most VTK objects
void ReleaseGraphicsResources(vtkWindow *window)
Defines a 1D piecewise function.
record modification and/or execution time
vtkTextureObject * TextureObject
void Modified()
Set this objects time to the current time.
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 Activate()
Activate and Bind the texture.
vtkOpenGLVolumeOpacityTable * GetTable(unsigned int i)
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].
window superclass for vtkRenderWindow
static int NearestPowerOfTwo(int x)
Compute the nearest power of two that is not less than x.
virtual void SetMinificationFilter(int)
Minification filter mode.
size_t GetNumberOfTables()
void Create(unsigned int numberOfTables)
virtual vtkMTimeType GetMTime()
Return this object's modified time.
void Update(vtkPiecewiseFunction *scalarOpacity, int blendMode, double sampleDistance, double range[2], double unitDistance, int filterValue, vtkOpenGLRenderWindow *renWin)
virtual unsigned int GetHandle()
Returns the OpenGL handle.
int GetMaximumSupportedTextureWidth(vtkOpenGLRenderWindow *renWin, int idealWidth)
abstracts an OpenGL texture 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 int GetMaximumTextureSize(vtkOpenGLRenderWindow *context)
Query and return maximum texture size (dimension) supported by the OpenGL driver for a particular con...
void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
void Deactivate()
Deactivate and UnBind the texture.
static vtkTextureObject * New()
~vtkOpenGLVolumeOpacityTable() override
virtual void SetWrapS(int)
Wrap mode for the first texture coordinate "s" Valid values are:
vtkOpenGLVolumeOpacityTable(int width=1024)
vtkMTimeType GetMTime() override
Data objects are composite objects and need to check each part for MTime.
double LastSampleDistance
int GetTextureUnit()
Return the texture unit used for this texture.
static vtkOpenGLVolumeOpacityTable * New()
static T Max(const T &a, const T &b)
Returns the maximum of the two arguments provided.
virtual void Delete()
Delete a VTK object.
void SetContext(vtkOpenGLRenderWindow *)
Get/Set the context.
virtual void SetMagnificationFilter(int)
Magnification filter mode.