00001
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
00034
00035 #ifndef GROOVX_GFX_GLXWRAPPER_H_UTC20050626084024_DEFINED
00036 #define GROOVX_GFX_GLXWRAPPER_H_UTC20050626084024_DEFINED
00037
00038 #include "gfx/glwindowinterface.h"
00039
00040 #include <GL/glx.h>
00041 #include <X11/Xlib.h>
00042
00043 class GlxOpts;
00044
00046 class GlxWrapper : public GlWindowInterface
00047 {
00048 private:
00049 Display* itsDisplay;
00050 XVisualInfo* itsVisInfo;
00051 GLXContext itsContext;
00052 Window itsCurrentWin;
00053
00054 GlxWrapper(const GlxWrapper&);
00055 GlxWrapper& operator=(const GlxWrapper&);
00056
00058 GlxWrapper(Display* dpy, GlxOpts& opts, GlxWrapper* share = 0);
00059
00060 public:
00062 static GlxWrapper* make(Display* dpy, GlxOpts& opts, GlxWrapper* share = 0);
00063
00065 virtual ~GlxWrapper();
00066
00068 virtual bool isDirect() const
00069 {
00070 return glXIsDirect(itsDisplay, itsContext) == True ? true : false;
00071 }
00072
00074 virtual bool isDoubleBuffered() const;
00075
00077 virtual unsigned int bitsPerPixel() const;
00078
00080 virtual void makeCurrent();
00081
00083 virtual void onReshape(int width, int height);
00084
00086 virtual void swapBuffers() const;
00087
00088
00089
00091 void bindWindow(Window win) { itsCurrentWin = win; }
00092
00094 Display* display() const { return itsDisplay; }
00095
00097 Window window() const { return itsCurrentWin; }
00098
00100 GLXContext context() const { return itsContext; }
00101
00103 XVisualInfo* visInfo() const { return itsVisInfo; }
00104 };
00105
00106 static const char __attribute__((used)) vcid_groovx_gfx_glxwrapper_h_utc20050626084024[] = "$Id: glxwrapper.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00107 #endif // !GROOVX_GFX_GLXWRAPPER_H_UTC20050626084024_DEFINED