65 #ifndef vtkVolumeTexture_h
66 #define vtkVolumeTexture_h
73 #include "vtkRenderingVolumeOpenGL2Module.h"
101 TextureSize = texSize;
120 double DatasetStepSize[3];
126 double LoadedBounds[6];
127 double LoadedBoundsAA[6];
128 double VolumeGeometry[24];
138 void SetPartitions(
int const x,
int const y,
int const z);
139 const Size3& GetPartitions();
148 int const interpolation);
175 void ReleaseGraphicsResources(
vtkWindow* win);
183 static void GetScaleAndBias(
const int scalarType,
float* scalarRange,
float&
scale,
float& bias);
189 float ScalarRange[4][2];
190 float CellSpacing[3];
196 float AdjustedTexMin[4];
197 float AdjustedTexMax[4];
201 int CoordsTexSizes[3];
202 float CoordsScale[3];
219 bool LoadTexture(
int const interpolation,
VolumeBlock* volBlock);
224 void SplitVolume(
vtkImageData* imageData, Size3
const& part);
226 void CreateBlocks(
unsigned int const format,
unsigned int const internalFormat,
int const type);
228 void AdjustExtentForCell(Size6&
extent);
229 Size3 ComputeBlockSize(
int*
extent);
235 void SelectTextureFormat(
unsigned int& format,
unsigned int& internalFormat,
int&
type,
236 int const scalarType,
int const noOfComponents);
248 void UpdateTextureToDataMatrix(
VolumeBlock* block);
268 void ComputeCellToPointMatrix(
int extents[6]);
279 bool AreDimensionsValid(
283 int const depth,
int numComps,
int dataType,
void* dataPtr);
286 void UpdateInterpolationType(
int const interpolation);
287 void SetInterpolation(
int const interpolation);
293 std::vector<vtkDataSet*> ImageDataBlocks;
294 std::map<vtkDataSet*, VolumeBlock*> ImageDataBlockMap;
295 std::vector<VolumeBlock*> SortedVolumeBlocks;
296 size_t CurrentBlockIdx;
299 std::vector<Size3> TextureSizes;
307 #endif // vtkVolumeTexture_h
VolumeBlock(vtkDataSet *dataset, vtkTextureObject *tex, Size3 const &texSize)
abstract base class for most VTK objects
represent and manipulate 4x4 transformation matrices
bool HandleLargeDataTypes
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Creates and manages the volume texture rendered by vtkOpenGLGPUVolumeRayCastMapper.
abstract class to specify dataset behavior
record modification and/or execution time
abstract specification for renderers
window superclass for vtkRenderWindow
vtkTextureObject * TextureObject
vtkSmartPointer< vtkTextureObject > BlankingTex
a simple class to control print indentation
topologically and geometrically regular array of data
abstract superclass for arrays of numeric data
std::map< std::string, DataArray > DataSet
key: variable name, value: DataArray
represents the common properties for rendering a volume.
vtkNew< vtkMatrix4x4 > TextureToDataset
vtkSmartPointer< vtkTextureObject > CoordsTex
abstracts an OpenGL texture object.
vtkNew< vtkMatrix4x4 > TextureToDatasetInv
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
vtkNew< vtkMatrix4x4 > CellToPointMatrix