You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.3 KiB
153 lines
5.3 KiB
2 years ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: $RCSfile: vtkTexture.h,v $
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
// .NAME vtkTexture - handles properties associated with a texture map
|
||
|
// .SECTION Description
|
||
|
// vtkTexture is an object that handles loading and binding of texture
|
||
|
// maps. It obtains its data from an input image data dataset type.
|
||
|
// Thus you can create visualization pipelines to read, process, and
|
||
|
// construct textures. Note that textures will only work if texture
|
||
|
// coordinates are also defined, and if the rendering system supports
|
||
|
// texture.
|
||
|
//
|
||
|
// Instances of vtkTexture are associated with actors via the actor's
|
||
|
// SetTexture() method. Actors can share texture maps (this is encouraged
|
||
|
// to save memory resources.)
|
||
|
|
||
|
// .SECTION Caveats
|
||
|
// Currently only 2D texture maps are supported, even though the data pipeline
|
||
|
// supports 1,2, and 3D texture coordinates.
|
||
|
//
|
||
|
// Some renderers such as OpenGL require that the texture map dimensions are
|
||
|
// a power of two in each direction. Other renderers may have similar
|
||
|
// (ridiculous) restrictions, so be careful out there... (Note: a recent change
|
||
|
// to vtk allows use of non-power of two texture maps in OpenGL. The texture is
|
||
|
// automatically resampled to a power of two in one or more directions.)
|
||
|
|
||
|
// .SECTION See Also
|
||
|
// vtkActor vtkRenderer vtkOpenGLTexture
|
||
|
|
||
|
#ifndef __vtkTexture_h
|
||
|
#define __vtkTexture_h
|
||
|
|
||
|
#include "vtkImageAlgorithm.h"
|
||
|
|
||
|
class vtkImageData;
|
||
|
class vtkLookupTable;
|
||
|
class vtkRenderer;
|
||
|
class vtkUnsignedCharArray;
|
||
|
class vtkWindow;
|
||
|
class vtkDataArray;
|
||
|
|
||
|
#define VTK_TEXTURE_QUALITY_DEFAULT 0
|
||
|
#define VTK_TEXTURE_QUALITY_16BIT 16
|
||
|
#define VTK_TEXTURE_QUALITY_32BIT 32
|
||
|
|
||
|
class VTK_RENDERING_EXPORT vtkTexture : public vtkImageAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
static vtkTexture *New();
|
||
|
vtkTypeRevisionMacro(vtkTexture,vtkImageAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent);
|
||
|
|
||
|
// Description:
|
||
|
// Renders a texture map. It first checks the object's modified time
|
||
|
// to make sure the texture maps Input is valid, then it invokes the
|
||
|
// Load() method.
|
||
|
virtual void Render(vtkRenderer *ren);
|
||
|
|
||
|
// Description:
|
||
|
// Release any graphics resources that are being consumed by this texture.
|
||
|
// The parameter window could be used to determine which graphic
|
||
|
// resources to release.
|
||
|
virtual void ReleaseGraphicsResources(vtkWindow *) {};
|
||
|
|
||
|
// Description:
|
||
|
// Abstract interface to renderer. Each concrete subclass of
|
||
|
// vtkTexture will load its data into graphics system in response
|
||
|
// to this method invocation.
|
||
|
virtual void Load(vtkRenderer *) {};
|
||
|
|
||
|
// Description:
|
||
|
// Turn on/off the repetition of the texture map when the texture
|
||
|
// coords extend beyond the [0,1] range.
|
||
|
vtkGetMacro(Repeat,int);
|
||
|
vtkSetMacro(Repeat,int);
|
||
|
vtkBooleanMacro(Repeat,int);
|
||
|
|
||
|
// Description:
|
||
|
// Turn on/off linear interpolation of the texture map when rendering.
|
||
|
vtkGetMacro(Interpolate,int);
|
||
|
vtkSetMacro(Interpolate,int);
|
||
|
vtkBooleanMacro(Interpolate,int);
|
||
|
|
||
|
// Description:
|
||
|
// Force texture quality to 16-bit or 32-bit.
|
||
|
// This might not be supported on all machines.
|
||
|
vtkSetMacro(Quality,int);
|
||
|
vtkGetMacro(Quality,int);
|
||
|
void SetQualityToDefault() {this->SetQuality(VTK_TEXTURE_QUALITY_DEFAULT);};
|
||
|
void SetQualityTo16Bit() {this->SetQuality(VTK_TEXTURE_QUALITY_16BIT);};
|
||
|
void SetQualityTo32Bit() {this->SetQuality(VTK_TEXTURE_QUALITY_32BIT);};
|
||
|
|
||
|
// Description:
|
||
|
// Turn on/off the mapping of color scalars through the lookup table.
|
||
|
// The default is Off. If Off, unsigned char scalars will be used
|
||
|
// directly as texture. If On, scalars will be mapped through the
|
||
|
// lookup table to generate 4-component unsigned char scalars.
|
||
|
// This ivar does not affect other scalars like unsigned short, float,
|
||
|
// etc. These scalars are always mapped through lookup tables.
|
||
|
vtkGetMacro(MapColorScalarsThroughLookupTable,int);
|
||
|
vtkSetMacro(MapColorScalarsThroughLookupTable,int);
|
||
|
vtkBooleanMacro(MapColorScalarsThroughLookupTable,int);
|
||
|
|
||
|
//BTX
|
||
|
// Description:
|
||
|
// This process object accepts image data as input.
|
||
|
vtkImageData *GetInput();
|
||
|
//ETX
|
||
|
|
||
|
// Description:
|
||
|
// Specify the lookup table to convert scalars if necessary
|
||
|
void SetLookupTable(vtkLookupTable *);
|
||
|
vtkGetObjectMacro(LookupTable,vtkLookupTable);
|
||
|
|
||
|
// Description:
|
||
|
// Get Mapped Scalars
|
||
|
vtkGetObjectMacro(MappedScalars,vtkUnsignedCharArray);
|
||
|
|
||
|
// Description:
|
||
|
// Map scalar values into color scalars.
|
||
|
unsigned char *MapScalarsToColors (vtkDataArray *scalars);
|
||
|
|
||
|
protected:
|
||
|
vtkTexture();
|
||
|
~vtkTexture();
|
||
|
|
||
|
int Repeat;
|
||
|
int Interpolate;
|
||
|
int Quality;
|
||
|
int MapColorScalarsThroughLookupTable;
|
||
|
vtkLookupTable *LookupTable;
|
||
|
vtkUnsignedCharArray *MappedScalars;
|
||
|
|
||
|
// this is to duplicated the previous behavior of SelfCreatedLookUpTable
|
||
|
int SelfAdjustingTableRange;
|
||
|
private:
|
||
|
vtkTexture(const vtkTexture&); // Not implemented.
|
||
|
void operator=(const vtkTexture&); // Not implemented.
|
||
|
};
|
||
|
|
||
|
#endif
|