FIFE  2008.0
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
fife_opengl.h
1 /***************************************************************************
2  * Copyright (C) 2005-2008 by the FIFE team *
3  * http://www.fifengine.de *
4  * This file is part of FIFE. *
5  * *
6  * FIFE is free software; you can redistribute it and/or *
7  * modify it under the terms of the GNU Lesser General Public *
8  * License as published by the Free Software Foundation; either *
9  * version 2.1 of the License, or (at your option) any later version. *
10  * *
11  * This library is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14  * Lesser General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU Lesser General Public *
17  * License along with this library; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
20  ***************************************************************************/
21 
22 #ifndef FIFE_UTIL_FIFEGL_H
23 #define FIFE_UTIL_FIFEGL_H
24 
25 // Standard C++ library includes
26 
27 // Platform specific includes
28 // Linux
29 #if defined( __unix__ )
30 #include <GL/gl.h>
31 #include <GL/glu.h>
32 #endif
33 
34 // Win32
35 #if defined( WIN32 )
36 // MSVC
37 #if defined( _MSC_VER )
38 #include <windows.h>
39 #include <GL/gl.h>
40 #include <GL/glu.h>
41 #undef DELETE
42 // MinGW
43 #else
44 #include <GL/gl.h>
45 #include <GL/glu.h>
46 #endif
47 #endif
48 
49 // Macintosh
50 #if defined( __APPLE_CC__ )
51 #include <OpenGL/gl.h>
52 #include <OpenGL/glu.h>
53 #include <OpenGL/glext.h>
54 #endif
55 
56 // 3rd party library includes
57 
58 // FIFE includes
59 // These includes are split up in two parts, separated by one empty line
60 // First block: files included from the FIFE root src directory
61 // Second block: files included from the same folder
62 
63 namespace FIFE {
64 
65  struct GLEnable {
66  GLenum m_flag;
67  GLboolean m_oldval;
68  GLEnable(GLenum flag) : m_flag(flag) {
69  glGetBooleanv(flag, &m_oldval);
70  if (!m_oldval) {
71  glEnable(flag);
72  }
73  }
74  ~GLEnable() {
75  if (!m_oldval) {
76  glDisable(m_flag);
77  }
78  }
79  };
80 
81  struct GLDisable {
82  GLenum m_flag;
83  GLboolean m_oldval;
84  GLDisable(GLenum flag) : m_flag(flag) {
85  glGetBooleanv(flag, &m_oldval);
86  if (m_oldval) {
87  glDisable(flag);
88  }
89  }
90  ~GLDisable() {
91  if (m_oldval) {
92  glEnable(m_flag);
93  }
94  }
95  };
96 
97 
98 } //FIFE
99 
100 #endif