Crazy Eddie's GUI System 0.8.7
RendererModules/OpenGL/RenderTarget.h
1/***********************************************************************
2 created: Wed, 8th Feb 2012
3 author: Lukas E Meindl (based on code by Paul D Turner)
4*************************************************************************/
5/***************************************************************************
6 * Copyright (C) 2004 - 2012 Paul D Turner & The CEGUI Development Team
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 ***************************************************************************/
27#ifndef _CEGUIOpenGLRenderTarget_h_
28#define _CEGUIOpenGLRenderTarget_h_
29
30#include "CEGUI/RendererModules/OpenGL/RendererBase.h"
31#include "../../RenderTarget.h"
32#include "../../Rect.h"
33
34#if defined(_MSC_VER)
35# pragma warning(push)
36# pragma warning(disable : 4251)
37#endif
38
39namespace CEGUI
40{
45template <typename T = RenderTarget>
46class OPENGL_GUIRENDERER_API OpenGLRenderTarget : public T
47{
48public:
51 virtual ~OpenGLRenderTarget();
52
53 // implement parts of RenderTarget interface
54 void draw(const GeometryBuffer& buffer);
55 void draw(const RenderQueue& queue);
56 void setArea(const Rectf& area);
57 const Rectf& getArea() const;
58 void activate();
59 void deactivate();
61 const Vector2f& p_in, Vector2f& p_out) const;
62
63protected:
65 virtual void updateMatrix() const;
66
72 static const double d_yfov_tan;
76 mutable bool d_matrixValid;
78 mutable double d_viewDistance;
79};
80
81}
82
83#if defined(_MSC_VER)
84# pragma warning(pop)
85#endif
86
87#endif
88
Abstract class defining the interface for objects that buffer geometry for later rendering.
Definition: GeometryBuffer.h:44
Intermediate OpenGL implementation of a RenderTarget.
Definition: RendererModules/OpenGL/RenderTarget.h:47
mat4Pimpl * d_matrix
saved copy of projection matrix
Definition: RendererModules/OpenGL/RenderTarget.h:74
double d_viewDistance
tracks viewing distance (this is set up at the same time as d_matrix)
Definition: RendererModules/OpenGL/RenderTarget.h:78
const Rectf & getArea() const
Return the area defined for this RenderTarget.
void unprojectPoint(const GeometryBuffer &buff, const Vector2f &p_in, Vector2f &p_out) const
Take point p_in unproject it and put the result in p_out. Resulting point is local to GeometryBuffer ...
static const double d_yfov_tan
tangent of the y FOV half-angle; used to calculate viewing distance.
Definition: RendererModules/OpenGL/RenderTarget.h:72
void activate()
Activate the render target and put it in a state ready to be drawn to.
void draw(const GeometryBuffer &buffer)
Draw geometry from the given GeometryBuffer onto the surface that this RenderTarget represents.
void draw(const RenderQueue &queue)
Draw geometry from the given RenderQueue onto the surface that this RenderTarget represents.
void setArea(const Rectf &area)
Set the area for this RenderTarget. The exact action this function will take depends upon what the co...
virtual void updateMatrix() const
helper that initialises the cached matrix
void deactivate()
Deactivate the render target after having completed rendering.
OpenGLRendererBase & d_owner
OpenGLRendererBase that created this object.
Definition: RendererModules/OpenGL/RenderTarget.h:68
Rectf d_area
holds defined area for the RenderTarget
Definition: RendererModules/OpenGL/RenderTarget.h:70
OpenGLRenderTarget(OpenGLRendererBase &owner)
Constructor.
bool d_matrixValid
true if saved matrix is up to date
Definition: RendererModules/OpenGL/RenderTarget.h:76
Common base class used for other OpenGL (desktop or ES) based renderer modules.
Definition: RendererBase.h:54
Class that represents a queue of GeometryBuffer objects to be rendered.
Definition: RenderQueue.h:54
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
Definition: GlmPimpl.h:37