00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00052 #ifndef __vtkOpenGLRenderWindow_h
00053 #define __vtkOpenGLRenderWindow_h
00054
00055 #include <stdlib.h>
00056 #include <X11/Xlib.h>
00057 #include <X11/Xutil.h>
00058 #include "vtkXRenderWindow.h"
00059 #include "GL/glx.h"
00060
00061 class vtkIdList;
00062
00063 class VTK_EXPORT vtkOpenGLRenderWindow : public vtkXRenderWindow
00064 {
00065 protected:
00066 GLXContext ContextId;
00067 int MultiSamples;
00068 long OldMonitorSetting;
00069
00070 public:
00071 static vtkOpenGLRenderWindow *New();
00072 vtkTypeMacro(vtkOpenGLRenderWindow,vtkXRenderWindow);
00073 void PrintSelf(ostream& os, vtkIndent indent);
00074
00076 virtual void Start(void);
00077
00079 virtual void Frame(void);
00080
00082 virtual void WindowConfigure(void);
00083
00085 virtual void WindowInitialize(void);
00086
00088 virtual void Initialize(void);
00089
00091 virtual void SetFullScreen(int);
00092
00094 virtual void WindowRemap(void);
00095
00097 virtual void PrefFullScreen(void);
00098
00100 virtual void SetSize(int,int);
00101 virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);};
00102
00104 virtual Colormap GetDesiredColormap();
00105 virtual Visual *GetDesiredVisual();
00106 virtual XVisualInfo *GetDesiredVisualInfo();
00107 virtual int GetDesiredDepth();
00108
00110 static void SetGlobalMaximumNumberOfMultiSamples(int val);
00111 static int GetGlobalMaximumNumberOfMultiSamples();
00112
00115 vtkSetMacro(MultiSamples,int);
00116 vtkGetMacro(MultiSamples,int);
00117
00119 virtual void StereoUpdate();
00120
00125 virtual void SetStereoCapableWindow(int capable);
00126
00128 virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
00129 virtual void SetPixelData(int x,int y,int x2,int y2,unsigned char *,
00130 int front);
00131
00133 virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
00134 virtual void SetRGBAPixelData(int x,int y,int x2,int y2,float *,int front,
00135 int blend=0);
00136 virtual unsigned char *GetRGBACharPixelData(int x,int y,int x2,int y2,
00137 int front);
00138 virtual void SetRGBACharPixelData(int x,int y,int x2,int y2,unsigned char *,
00139 int front, int blend=0);
00140
00142 virtual float *GetZbufferData( int x1, int y1, int x2, int y2 );
00143 virtual void SetZbufferData( int x1, int y1, int x2, int y2, float *buffer );
00144
00146 void MakeCurrent();
00147
00149 void RegisterTextureResource (GLuint id);
00150
00152 int GetDepthBufferSize();
00153
00154 protected:
00155 vtkOpenGLRenderWindow();
00156 ~vtkOpenGLRenderWindow();
00157 vtkOpenGLRenderWindow(const vtkOpenGLRenderWindow&) {};
00158 void operator=(const vtkOpenGLRenderWindow&) {};
00159
00160 vtkIdList *TextureResourceIds;
00161 };
00162
00163 #endif