1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkVolumeTextureMapper2D.h
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.
=========================================================================*/
/**
* @class vtkVolumeTextureMapper2D
* @brief Abstract class for a volume mapper
*
*
* vtkVolumeTextureMapper2D renders a volume using 2D texture mapping.
*
* @sa
* vtkVolumeMapper
* @deprecated
*/
#ifndef vtkVolumeTextureMapper2D_h
#define vtkVolumeTextureMapper2D_h
#include "vtkRenderingVolumeModule.h" // For export macro
#include "vtkVolumeTextureMapper.h"
#if !defined(VTK_LEGACY_REMOVE)
class VTKRENDERINGVOLUME_EXPORT vtkVolumeTextureMapper2D : public vtkVolumeTextureMapper
{
public:
vtkTypeMacro(vtkVolumeTextureMapper2D,vtkVolumeTextureMapper);
void PrintSelf( ostream& os, vtkIndent indent );
static vtkVolumeTextureMapper2D *New();
//@{
/**
* Target size in pixels of each size of the texture for downloading. Default is
* 512x512 - so a 512x512 texture will be tiled with as many slices of the volume
* as possible, then all the quads will be rendered. This can be set to optimize
* for a particular architecture. This must be set with numbers that are a power
* of two.
*/
vtkSetVector2Macro( TargetTextureSize, int );
vtkGetVector2Macro( TargetTextureSize, int );
//@}
//@{
/**
* This is the maximum number of planes that will be created for texture mapping
* the volume. If the volume has more voxels than this along the viewing direction,
* then planes of the volume will be skipped to ensure that this maximum is not
* violated. A skip factor is used, and is incremented until the maximum condition
* is satisfied.
*/
vtkSetMacro( MaximumNumberOfPlanes, int );
vtkGetMacro( MaximumNumberOfPlanes, int );
//@}
//@{
/**
* This is the maximum size of saved textures in bytes. If this size is large
* enough to hold the RGBA textures for all three directions (XxYxZx3x4 is
* the approximate value - it is actually a bit larger due to wasted space in
* the textures) then the textures will be saved.
*/
vtkSetMacro( MaximumStorageSize, int );
vtkGetMacro( MaximumStorageSize, int );
//@}
/**
* WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE
* DO NOT USE THIS METHOD OUTSIDE OF THE RENDERING PROCESS
* Render the volume
*/
virtual void Render(vtkRenderer *, vtkVolume *) {}
virtual void RenderQuads( int vtkNotUsed(count),
float *vtkNotUsed(v), float *vtkNotUsed(t),
unsigned char *vtkNotUsed(texture),
int vtkNotUsed(size)[2],
int vtkNotUsed(reverseFlag)) {}
/**
* Made public only for access from the templated method. Not a vtkGetMacro
* to avoid the PrintSelf defect.
*/
int GetInternalSkipFactor() {return this->InternalSkipFactor;};
int *GetAxisTextureSize() {return &(this->AxisTextureSize[0][0]);};
int GetSaveTextures() {return this->SaveTextures;};
unsigned char *GetTexture() {return this->Texture;};
protected:
vtkVolumeTextureMapper2D();
~vtkVolumeTextureMapper2D();
void InitializeRender( vtkRenderer *ren, vtkVolume *vol )
{this->InitializeRender( ren, vol, -1 );}
void InitializeRender( vtkRenderer *ren, vtkVolume *vol, int majorDirection );
void GenerateTexturesAndRenderQuads( vtkRenderer *ren, vtkVolume *vol );
int MajorDirection;
int TargetTextureSize[2];
int MaximumNumberOfPlanes;
int InternalSkipFactor;
int MaximumStorageSize;
unsigned char *Texture;
int TextureSize;
int SaveTextures;
vtkTimeStamp TextureMTime;
int AxisTextureSize[3][3];
void ComputeAxisTextureSize( int axis, int *size );
void RenderSavedTexture();
private:
vtkVolumeTextureMapper2D(const vtkVolumeTextureMapper2D&) VTK_DELETE_FUNCTION;
void operator=(const vtkVolumeTextureMapper2D&) VTK_DELETE_FUNCTION;
};
#endif // VTK_LEGACY_REMOVE
#endif
|