00001 #ifndef __RE_XVisual_h__
00002 #define __RE_XVisual_h__
00003
00004 #include "RE_API.h"
00005 #include "RE_Types.h"
00006 #include <X11/Xlib.h>
00007 #include <X11/Xutil.h>
00008 #include <GL/glx.h>
00009 #include "RE_Visual.h"
00010
00011 class RE_XServer;
00012
00013 extern RE_OGLContext parentContext;
00014
00015 class RE_API RE_XVisual : public RE_Visual
00016 {
00017 public:
00018 RE_XVisual(RE_XServer *newserver, RE_DisplayMode newmode);
00019 virtual ~RE_XVisual();
00020
00021 XVisualInfo *getHardwareVisual();
00022 XVisualInfo *getHardwareAlphaVisual();
00023 GLXFBConfigSGIX getFBConfig(bool use_pbuf = false);
00024 void usePbuffers(int f) { myUsePbufferFlag = f; }
00025
00026 Colormap getColormap();
00027 virtual RE_OGLContext createContext(RE_Window *win) const;
00028 virtual void deleteContext(RE_OGLContext) const;
00029
00030 private:
00031 Colormap findColormap(XVisualInfo * vis, RE_DisplayMode m,
00032 int alloc);
00033
00034 RE_XServer *server;
00035 XVisualInfo *myVisual;
00036 XVisualInfo *myAlphaVisual;
00037 XVisualInfo *myAltVisual;
00038 GLXFBConfigSGIX myFBConfig;
00039 unsigned int myUsePbufferFlag:1,
00040 myInitializedAltVisual:1;
00041 Colormap myColormap;
00042 };
00043
00044 #endif