00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00032 #ifndef __vtkCaveRenderManager_h
00033 #define __vtkCaveRenderManager_h
00034
00035 #include "vtkParallelRenderManager.h"
00036
00037 class vtkRenderWindow;
00038 class vtkMultiProcessController;
00039 class vtkSocketController;
00040 class vtkRenderer;
00041 class vtkCamera;
00042 class vtkTiledDisplaySchedule;
00043 class vtkPVCompositeUtilities;
00044 class vtkFloatArray;
00045 class vtkUnsignedCharArray;
00046 class vtkPVCaveClientInfo;
00047 class vtkPVCompositeBuffer;
00048
00049 class VTK_EXPORT vtkCaveRenderManager : public vtkParallelRenderManager
00050 {
00051 public:
00052 static vtkCaveRenderManager *New();
00053 vtkTypeRevisionMacro(vtkCaveRenderManager,vtkParallelRenderManager);
00054 void PrintSelf(ostream& os, vtkIndent indent);
00055
00058 virtual void SetRenderWindow(vtkRenderWindow *renWin);
00059
00061 virtual void ClientEndRender();
00062
00065 virtual void InitializeRMIs();
00066
00070 void SetController(vtkMultiProcessController* controller);
00071
00073
00074 void SetSocketController(vtkSocketController* controller);
00075 vtkGetObjectMacro(SocketController, vtkSocketController);
00077
00078
00079 enum Tags {
00080 ROOT_RENDER_RMI_TAG=12721,
00081 SATELLITE_RENDER_RMI_TAG=12722,
00082 INFO_TAG=22135,
00083 DEFINE_DISPLAY_RMI_TAG = 89843,
00084 DEFINE_DISPLAY_INFO_TAG = 89844
00085 };
00086
00087
00089
00093 void DefineDisplay(int idx, double origin[3],
00094 double x[3], double y[3]);
00095 void DefineDisplayRMI();
00097
00099
00101 vtkSetMacro(ClientFlag,int);
00102 vtkGetMacro(ClientFlag,int);
00104
00106 float GetZBufferValue(int x, int y);
00107
00109
00110 void ClientStartRender();
00111 void RootStartRenderRMI(vtkPVCaveClientInfo *info);
00112 void SatelliteStartRenderRMI();
00114
00115 protected:
00116 vtkCaveRenderManager();
00117 ~vtkCaveRenderManager();
00118
00119
00120 void ComputeCamera(vtkPVCaveClientInfo *info, vtkCamera* cam);
00121
00122 int ClientFlag;
00123
00124 vtkSocketController* SocketController;
00125
00126 void SetupCamera(int tileIdx, int reduction);
00127
00128 unsigned long StartTag;
00129 unsigned long EndTag;
00130
00131 void PreRenderProcessing() {}
00132 void PostRenderProcessing() {}
00133 void InternalSatelliteStartRender(vtkPVCaveClientInfo *info);
00134
00135
00136 double DisplayOrigin[4];
00137 double DisplayX[4];
00138 double DisplayY[4];
00139
00140 private:
00141 vtkCaveRenderManager(const vtkCaveRenderManager&);
00142 void operator=(const vtkCaveRenderManager&);
00143 };
00144
00145 #endif