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 #if defined(__APPLE__) && (defined(VTK_USE_CARBON) || defined(VTK_USE_COCOA))
00030 #include <OpenGL/gl.h>
00031 #else
00032 #include <GL/gl.h>
00033 #endif
00034
00035 class vtkIdList;
00036
00037 class VTK_RENDERING_EXPORT vtkOpenGLRenderWindow : public vtkRenderWindow
00038 {
00039 protected:
00040 int MultiSamples;
00041 long OldMonitorSetting;
00042
00043 public:
00044 vtkTypeRevisionMacro(vtkOpenGLRenderWindow,vtkRenderWindow);
00045 void PrintSelf(ostream& os, vtkIndent indent);
00046
00048
00049 static void SetGlobalMaximumNumberOfMultiSamples(int val);
00050 static int GetGlobalMaximumNumberOfMultiSamples();
00052
00054
00056 vtkSetMacro(MultiSamples,int);
00057 vtkGetMacro(MultiSamples,int);
00059
00061 virtual void StereoUpdate();
00062
00064
00065 virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
00066 virtual int GetPixelData(int x,int y,int x2,int y2, int front,
00067 vtkUnsignedCharArray*);
00068 virtual int SetPixelData(int x,int y,int x2,int y2,unsigned char *,
00069 int front);
00070 virtual int SetPixelData(int x,int y,int x2,int y2, vtkUnsignedCharArray*,
00071 int front);
00073
00075
00076 virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
00077 virtual int GetRGBAPixelData(int x,int y,int x2,int y2, int front,
00078 vtkFloatArray* data);
00079 virtual int SetRGBAPixelData(int x,int y,int x2,int y2,float *,int front,
00080 int blend=0);
00081 virtual int SetRGBAPixelData(int x,int y,int x2,int y2, vtkFloatArray*,
00082 int front, int blend=0);
00083 virtual void ReleaseRGBAPixelData(float *data);
00084 virtual unsigned char *GetRGBACharPixelData(int x,int y,int x2,int y2,
00085 int front);
00086 virtual int GetRGBACharPixelData(int x,int y,int x2,int y2, int front,
00087 vtkUnsignedCharArray* data);
00088 virtual int SetRGBACharPixelData(int x,int y,int x2,int y2,unsigned char *,
00089 int front, int blend=0);
00090 virtual int SetRGBACharPixelData(int x,int y,int x2,int y2,
00091 vtkUnsignedCharArray *,
00092 int front, int blend=0);
00094
00096
00097 virtual float *GetZbufferData( int x1, int y1, int x2, int y2 );
00098 virtual int GetZbufferData( int x1, int y1, int x2, int y2,
00099 vtkFloatArray* z );
00100 virtual int SetZbufferData( int x1, int y1, int x2, int y2, float *buffer );
00101 virtual int SetZbufferData( int x1, int y1, int x2, int y2,
00102 vtkFloatArray *buffer );
00104
00106 void MakeCurrent() = 0;
00107
00109 void RegisterTextureResource (GLuint id);
00110
00112 int GetDepthBufferSize();
00113
00115 virtual void OpenGLInit();
00116
00117 protected:
00118 vtkOpenGLRenderWindow();
00119 ~vtkOpenGLRenderWindow();
00120
00121 vtkIdList *TextureResourceIds;
00122
00123 int GetPixelData(int x,int y,int x2,int y2,int front, unsigned char* data);
00124 int GetZbufferData( int x1, int y1, int x2, int y2, float* z );
00125 int GetRGBAPixelData(int x,int y,int x2,int y2, int front, float* data);
00126 int GetRGBACharPixelData(int x,int y,int x2,int y2, int front,
00127 unsigned char* data);
00128
00129 private:
00130 vtkOpenGLRenderWindow(const vtkOpenGLRenderWindow&);
00131 void operator=(const vtkOpenGLRenderWindow&);
00132 };
00133
00134 #endif