00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00024 #ifndef __vtkOpenGLRenderWindow_h
00025 #define __vtkOpenGLRenderWindow_h
00026
00027 #include "vtkRenderWindow.h"
00028
00029 #include "vtkOpenGL.h"
00030
00031 class vtkIdList;
00032
00033 class VTK_RENDERING_EXPORT vtkOpenGLRenderWindow : public vtkRenderWindow
00034 {
00035 protected:
00036 long OldMonitorSetting;
00037
00038 public:
00039 vtkTypeRevisionMacro(vtkOpenGLRenderWindow,vtkRenderWindow);
00040 void PrintSelf(ostream& os, vtkIndent indent);
00041
00043
00044 static void SetGlobalMaximumNumberOfMultiSamples(int val);
00045 static int GetGlobalMaximumNumberOfMultiSamples();
00047
00049 virtual void StereoUpdate();
00050
00052
00053 virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
00054 virtual int GetPixelData(int x,int y,int x2,int y2, int front,
00055 vtkUnsignedCharArray *data);
00056 virtual int SetPixelData(int x,int y,int x2,int y2,unsigned char *data,
00057 int front);
00058 virtual int SetPixelData(int x,int y,int x2,int y2,
00059 vtkUnsignedCharArray *data, int front);
00061
00063
00064 virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
00065 virtual int GetRGBAPixelData(int x,int y,int x2,int y2, int front,
00066 vtkFloatArray* data);
00067 virtual int SetRGBAPixelData(int x,int y,int x2,int y2, float *data,
00068 int front, int blend=0);
00069 virtual int SetRGBAPixelData(int x,int y,int x2,int y2, vtkFloatArray *data,
00070 int front, int blend=0);
00071 virtual void ReleaseRGBAPixelData(float *data);
00072 virtual unsigned char *GetRGBACharPixelData(int x,int y,int x2,int y2,
00073 int front);
00074 virtual int GetRGBACharPixelData(int x,int y,int x2,int y2, int front,
00075 vtkUnsignedCharArray *data);
00076 virtual int SetRGBACharPixelData(int x, int y, int x2, int y2,
00077 unsigned char *data, int front,
00078 int blend=0);
00079 virtual int SetRGBACharPixelData(int x,int y,int x2,int y2,
00080 vtkUnsignedCharArray *data, int front,
00081 int blend=0);
00083
00085
00086 virtual float *GetZbufferData( int x1, int y1, int x2, int y2 );
00087 virtual int GetZbufferData( int x1, int y1, int x2, int y2, float* z );
00088 virtual int GetZbufferData( int x1, int y1, int x2, int y2,
00089 vtkFloatArray* z );
00090 virtual int SetZbufferData( int x1, int y1, int x2, int y2, float *buffer );
00091 virtual int SetZbufferData( int x1, int y1, int x2, int y2,
00092 vtkFloatArray *buffer );
00094
00096 void MakeCurrent() = 0;
00097
00099 void RegisterTextureResource (GLuint id);
00100
00102 int GetDepthBufferSize();
00103
00106 int GetColorBufferSizes(int *rgba);
00107
00109 virtual void OpenGLInit();
00110
00116 unsigned int GetBackLeftBuffer();
00117
00123 unsigned int GetBackRightBuffer();
00124
00130 unsigned int GetFrontLeftBuffer();
00131
00137 unsigned int GetFrontRightBuffer();
00138
00144 unsigned int GetBackBuffer();
00145
00151 unsigned int GetFrontBuffer();
00152
00156 virtual void CheckGraphicError();
00157
00159 virtual int HasGraphicError();
00160
00162 virtual const char *GetLastGraphicErrorString();
00163
00165
00166 vtkGetMacro(ContextCreationTime, vtkTimeStamp);
00168 protected:
00169 vtkOpenGLRenderWindow();
00170 ~vtkOpenGLRenderWindow();
00171
00172 vtkIdList *TextureResourceIds;
00173
00174 int GetPixelData(int x,int y,int x2,int y2,int front, unsigned char* data);
00175 int GetRGBAPixelData(int x,int y,int x2,int y2, int front, float* data);
00176 int GetRGBACharPixelData(int x,int y,int x2,int y2, int front,
00177 unsigned char* data);
00178
00184 int CreateHardwareOffScreenWindow(int width, int height);
00185
00189 void DestroyHardwareOffScreenWindow();
00190
00192 int OffScreenUseFrameBuffer;
00193
00195
00196 int NumberOfFrameBuffers;
00197 unsigned int TextureObjects[4];
00198 unsigned int FrameBufferObject;
00199 unsigned int DepthRenderBufferObject;
00201
00203 virtual void CreateAWindow()=0;
00204
00206 virtual void DestroyWindow()=0;
00207
00208 unsigned int BackLeftBuffer;
00209 unsigned int BackRightBuffer;
00210 unsigned int FrontLeftBuffer;
00211 unsigned int FrontRightBuffer;
00212 unsigned int FrontBuffer;
00213 unsigned int BackBuffer;
00214
00215
00216 unsigned int LastGraphicError;
00217
00218 vtkTimeStamp ContextCreationTime;
00219 private:
00220 vtkOpenGLRenderWindow(const vtkOpenGLRenderWindow&);
00221 void operator=(const vtkOpenGLRenderWindow&);
00222 };
00223
00224 #endif