Crazy Eddie's GUI System  0.8.3
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
GLRenderer.h
1 /***********************************************************************
2  filename: CEGUIOpenGLRenderer.h
3  created: Sun Jan 11 2009
4  authors: Paul D Turner <paul@cegui.org.uk>
5  Lukas E Meindl
6 *************************************************************************/
7 /***************************************************************************
8  * Copyright (C) 2004 - 2010 Paul D Turner & The CEGUI Development Team
9  *
10  * Permission is hereby granted, free of charge, to any person obtaining
11  * a copy of this software and associated documentation files (the
12  * "Software"), to deal in the Software without restriction, including
13  * without limitation the rights to use, copy, modify, merge, publish,
14  * distribute, sublicense, and/or sell copies of the Software, and to
15  * permit persons to whom the Software is furnished to do so, subject to
16  * the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be
19  * included in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27  * OTHER DEALINGS IN THE SOFTWARE.
28  ***************************************************************************/
29 #ifndef _CEGUIOpenGLRenderer_h_
30 #define _CEGUIOpenGLRenderer_h_
31 
32 #include "RendererBase.h"
33 
34 namespace CEGUI
35 {
40 class OPENGL_GUIRENDERER_API OpenGLRenderer : public OpenGLRendererBase
41 {
42 public:
45  {
53  TTT_NONE
54  };
55 
79  static OpenGLRenderer& bootstrapSystem(
80  const TextureTargetType tt_type = TTT_AUTO,
81  const int abi = CEGUI_VERSION_ABI);
82 
109  static OpenGLRenderer& bootstrapSystem(const Sizef& display_size,
110  const TextureTargetType tt_type = TTT_AUTO,
111  const int abi = CEGUI_VERSION_ABI);
112 
128  static void destroySystem();
129 
141  static OpenGLRenderer& create(const TextureTargetType tt_type = TTT_AUTO,
142  const int abi = CEGUI_VERSION_ABI);
143 
158  static OpenGLRenderer& create(const Sizef& display_size,
159  const TextureTargetType tt_type = TTT_AUTO,
160  const int abi = CEGUI_VERSION_ABI);
161 
169  static void destroy(OpenGLRenderer& renderer);
170 
171  // base class overrides / abstract function implementations
172  void beginRendering();
173  void endRendering();
174  bool isS3TCSupported() const;
175  void setupRenderingBlendMode(const BlendMode mode,
176  const bool force = false);
177  void setViewProjectionMatrix(const mat4Pimpl* viewProjectionMatrix);
178 
179 protected:
180  OpenGLGeometryBufferBase* createGeometryBuffer_impl();
181  TextureTarget* createTextureTarget_impl();
182 
184  void initialiseRendererIDString();
185 
194  OpenGLRenderer(const TextureTargetType tt_type);
195 
207  OpenGLRenderer(const Sizef& display_size, const TextureTargetType tt_type);
208 
213  virtual ~OpenGLRenderer();
214 
216  void setupExtraStates();
217 
219  void cleanupExtraStates();
220 
222  void initialiseTextureTargetFactory(const TextureTargetType tt_type);
223 
224  void initialiseGLExtensions();
225 
228 };
229 
230 }
231 
232 #endif
233