00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00031 #ifndef __vtkOpenGLProjectedAAHexahedraMapper_h
00032 #define __vtkOpenGLProjectedAAHexahedraMapper_h
00033
00034 #include "vtkProjectedAAHexahedraMapper.h"
00035
00036 class vtkFloatArray;
00037 class vtkPoints;
00038 class vtkUnsignedCharArray;
00039 class vtkVisibilitySort;
00040 class vtkVolumeProperty;
00041 class vtkRenderWindow;
00042 class vtkShaderProgram2;
00043
00044 class VTK_VOLUMERENDERING_EXPORT vtkOpenGLProjectedAAHexahedraMapper : public vtkProjectedAAHexahedraMapper
00045 {
00046 public:
00047 vtkTypeMacro(vtkOpenGLProjectedAAHexahedraMapper,
00048 vtkProjectedAAHexahedraMapper);
00049 static vtkOpenGLProjectedAAHexahedraMapper *New();
00050 virtual void PrintSelf(ostream &os, vtkIndent indent);
00051
00054 bool IsRenderSupported(vtkRenderWindow *w);
00055
00056 void Render(vtkRenderer *renderer, vtkVolume *volume);
00057
00058 void ReleaseGraphicsResources(vtkWindow *window);
00059
00060 protected:
00061 vtkOpenGLProjectedAAHexahedraMapper();
00062 ~vtkOpenGLProjectedAAHexahedraMapper();
00063
00065 float* ConvertScalars(vtkDataArray* inScalars);
00066
00068 float* ConvertPoints(vtkPoints* inPoints);
00069
00071 virtual void ProjectHexahedra(vtkRenderer *renderer, vtkVolume *volume);
00072
00074 void Initialize(vtkRenderer *renderer, vtkVolume *volume);
00075
00078 void UpdatePreintegrationTexture(vtkVolume *vome, vtkDataArray *scalars);
00079
00082 void CreateProgram(vtkRenderWindow *w);
00083
00085 void SetState(double* observer);
00086
00088 void RenderHexahedron(float min[3], float max[3], float scalars[8]);
00089
00091 void UnsetState();
00092
00093
00094 bool Initialized;
00095
00096 int UsingCellColors;
00097
00098 float MaxCellSize;
00099 vtkTimeStamp InputAnalyzedTime;
00100 vtkTimeStamp PreintTextureTime;
00101 vtkTimeStamp ColorsMappedTime;
00102
00103 unsigned int PreintTexture;
00104
00105
00106 float* pos_points;
00107 float* min_points;
00108 float* node_data1;
00109 float* node_data2;
00110
00111
00112 int num_points;
00113 static const int max_points = 4096;
00114
00115
00116 vtkShaderProgram2 *Shader;
00117
00118 int GaveError;
00119
00120 float ScalarScale, ScalarShift, ScalarResolution;
00121 float LengthScale;
00122
00123 vtkVolumeProperty *LastProperty;
00124
00125 vtkFloatArray *ConvertedPoints;
00126 vtkFloatArray *ConvertedScalars;
00127
00128 private:
00129 vtkOpenGLProjectedAAHexahedraMapper(const vtkOpenGLProjectedAAHexahedraMapper &);
00130 void operator=(const vtkOpenGLProjectedAAHexahedraMapper &);
00131 };
00132
00133 #endif