~thomir-deactivatedaccount/cegui/fix-build

« back to all changes in this revision

Viewing changes to cegui/include/RendererModules/OpenGL/CEGUIOpenGLGLXPBTextureTarget.h

  • Committer: Thomi Richards
  • Date: 2013-02-06 22:13:36 UTC
  • Revision ID: thomi.richards@canonical.com-20130206221336-rsmud4k50g6nzv50
InitialĀ codeĀ import.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***********************************************************************
 
2
    filename:   CEGUIOpenGLGLXPBTextureTarget.h
 
3
    created:    Sat Jan 31 2009
 
4
    author:     Paul D Turner
 
5
*************************************************************************/
 
6
/***************************************************************************
 
7
 *   Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team
 
8
 *
 
9
 *   Permission is hereby granted, free of charge, to any person obtaining
 
10
 *   a copy of this software and associated documentation files (the
 
11
 *   "Software"), to deal in the Software without restriction, including
 
12
 *   without limitation the rights to use, copy, modify, merge, publish,
 
13
 *   distribute, sublicense, and/or sell copies of the Software, and to
 
14
 *   permit persons to whom the Software is furnished to do so, subject to
 
15
 *   the following conditions:
 
16
 *
 
17
 *   The above copyright notice and this permission notice shall be
 
18
 *   included in all copies or substantial portions of the Software.
 
19
 *
 
20
 *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
21
 *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
22
 *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 
23
 *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
 
24
 *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 
25
 *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 
26
 *   OTHER DEALINGS IN THE SOFTWARE.
 
27
 ***************************************************************************/
 
28
#ifndef _CEGUIOpenGLGLXPBTextureTarget_h_
 
29
#define _CEGUIOpenGLGLXPBTextureTarget_h_
 
30
 
 
31
#include <GL/glxew.h>
 
32
 
 
33
#include "CEGUIOpenGLTextureTarget.h"
 
34
#include "../../CEGUIRect.h"
 
35
 
 
36
// Start of CEGUI namespace section
 
37
namespace CEGUI
 
38
{
 
39
class OpenGLTexture;
 
40
 
 
41
/*!
 
42
\brief
 
43
    OpenGLGLXPBTextureTarget - allows rendering to an OpenGL texture via the
 
44
    pbuffer provided in GLX 1.3 and above.
 
45
*/
 
46
class OPENGL_GUIRENDERER_API OpenGLGLXPBTextureTarget : public OpenGLTextureTarget
 
47
{
 
48
public:
 
49
    OpenGLGLXPBTextureTarget(OpenGLRenderer& owner);
 
50
    virtual ~OpenGLGLXPBTextureTarget();
 
51
 
 
52
    // overrides from OpenGLRenderTarget
 
53
    void activate();
 
54
    void deactivate();
 
55
    // implementation of TextureTarget interface
 
56
    void clear();
 
57
    void declareRenderSize(const Size& sz);
 
58
    // specialise functions from OpenGLTextureTarget
 
59
    void grabTexture();
 
60
    void restoreTexture();
 
61
 
 
62
protected:
 
63
    //! default size of created texture objects
 
64
    static const float DEFAULT_SIZE;
 
65
 
 
66
    //! Initialise the PBuffer with the needed size
 
67
    void initialisePBuffer();
 
68
 
 
69
    //! Switch rendering so it targets the pbuffer
 
70
    void enablePBuffer() const;
 
71
 
 
72
    //! Switch rendering to target what was active before the pbuffer was used.
 
73
    void disablePBuffer() const;
 
74
 
 
75
    //! Perform basic initialisation of the texture we're going to use.
 
76
    void initialiseTexture();
 
77
 
 
78
    //! Selects an appropriate FB config to use and stores in d_fbconfig.
 
79
    void selectFBConfig();
 
80
 
 
81
    //!Creates the context to use with the pbuffer.
 
82
    void createContext();
 
83
 
 
84
    //! X server display.
 
85
    Display* d_dpy;
 
86
    //! GLX config used in creating pbuffer
 
87
    GLXFBConfig d_fbconfig;
 
88
    //! GLX context
 
89
    GLXContext d_context;
 
90
    //! The GLX pbuffer we're using.
 
91
    GLXPbuffer d_pbuffer;
 
92
    //! stores previous X display when switching to pbuffer
 
93
    mutable Display* d_prevDisplay;
 
94
    //! stores previous GLX drawable when switching to pbuffer
 
95
    mutable GLXDrawable d_prevDrawable;
 
96
    //! stores previous GLX context when switching to pbuffer
 
97
    mutable GLXContext d_prevContext;
 
98
};
 
99
 
 
100
} // End of  CEGUI namespace section
 
101
 
 
102
#endif  // end of guard _CEGUIOpenGLGLXPBTextureTarget_h_