fix build
[gltest.git] / glxbackend.h
1 /* gltest - small OpenGL tearing test program
2  * Copyright (C) 2012-2013 Ralf Jung <post@ralfj.de>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18
19 #include "glwindow.h"
20 #include "glutil.h"
21
22 #include <GL/glx.h>
23 #include <string>
24
25
26 /** Make an X window fit for GL. You have to manage the X window yourself! */
27 class GLXBackend : public GLBackend {
28 public:
29         /** Create a GL window class and find an appropriate visual */
30         GLXBackend() : display(NULL), context(None) {}
31         /** Fre all resources */
32         virtual ~GLXBackend();
33         
34         /** Initialize GL backend, choose visual configuration and return the ID */
35         virtual VisualID initialize(Display *display);
36         
37         /** create a GL context for the given window */
38         virtual void createContext(Window window);
39         
40         /** Swap back and front buffers */
41         virtual void swapBuffers() const;
42         
43         /** Set the swap interval */
44         virtual void setSwapInterval(int i) const;
45 private:
46         Display *display;
47         GLXFBConfig config;
48         GLXContext context;
49         Window window;
50         
51         PFNGLXSWAPINTERVALMESAPROC funSwapIntervalMesa;
52         PFNGLXSWAPINTERVALEXTPROC funSwapIntervalExt;
53         PFNGLXCREATECONTEXTATTRIBSARBPROC funCreateContextAttribsARB;
54         
55         bool haveGLXExtension(const std::string &name);
56         T_proc resolveGLXFunction(const char *extension, const char *function);
57 };