Crazy Eddie's GUI System
0.8.7
RendererModules/Ogre/GeometryBuffer.h
1
/***********************************************************************
2
created: Tue Feb 17 2009
3
author: Paul D Turner
4
*************************************************************************/
5
/***************************************************************************
6
* Copyright (C) 2004 - 2011 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 _CEGUIOgreGeometryBuffer_h_
28
#define _CEGUIOgreGeometryBuffer_h_
29
30
#include "CEGUI/GeometryBuffer.h"
31
#include "CEGUI/RendererModules/Ogre/Renderer.h"
32
#include "CEGUI/Rect.h"
33
#include "CEGUI/Quaternion.h"
34
35
#include <OgreMatrix4.h>
36
#include <OgreColourValue.h>
37
#include <OgreRenderOperation.h>
38
#include <OgreTexture.h>
39
40
#include <utility>
41
#include <vector>
42
43
#ifdef CEGUI_USE_OGRE_HLMS
44
#include <OgreRenderable.h>
45
#endif
46
47
// Ogre forward refs
48
namespace
Ogre
49
{
50
class
RenderSystem;
51
}
52
53
// Start of CEGUI namespace section
54
namespace
CEGUI
55
{
57
class
OGRE_GUIRENDERER_API
OgreGeometryBuffer
:
public
GeometryBuffer
58
{
59
public
:
61
OgreGeometryBuffer
(
OgreRenderer
& owner, Ogre::RenderSystem& rs);
63
virtual
~
OgreGeometryBuffer
();
64
66
const
Ogre::Matrix4& getMatrix()
const
;
67
68
// implement CEGUI::GeometryBuffer interface.
69
virtual
void
draw()
const
;
70
virtual
void
setTranslation(
const
Vector3f
& v);
71
virtual
void
setRotation(
const
Quaternion
& r);
72
virtual
void
setPivot(
const
Vector3f
& p);
73
virtual
void
setClippingRegion(
const
Rectf
& region);
74
virtual
void
appendVertex(
const
Vertex
& vertex);
75
virtual
void
appendGeometry(
const
Vertex
*
const
vbuff, uint vertex_count);
76
virtual
void
setActiveTexture(
Texture
* texture);
77
virtual
void
reset();
78
virtual
Texture
* getActiveTexture()
const
;
79
virtual
uint getVertexCount()
const
;
80
virtual
uint getBatchCount()
const
;
81
virtual
void
setRenderEffect(
RenderEffect
* effect);
82
virtual
RenderEffect
* getRenderEffect();
83
void
setClippingActive(
const
bool
active);
84
bool
isClippingActive()
const
;
85
86
protected
:
88
Ogre::RGBA colourToOgre(
const
Colour
& col)
const
;
90
void
updateMatrix()
const
;
92
void
syncHardwareBuffer()
const
;
94
void
initialiseTextureStates()
const
;
95
97
struct
OgreVertex
98
{
99
float
x, y, z;
100
Ogre::RGBA diffuse;
101
float
u, v;
102
};
103
105
struct
BatchInfo
106
{
107
Ogre::TexturePtr texture;
108
uint vertexCount;
109
bool
clip;
110
};
111
113
OgreRenderer
& d_owner;
115
Ogre::RenderSystem& d_renderSystem;
117
OgreTexture
* d_activeTexture;
119
Rectf
d_clipRect;
121
bool
d_clippingActive;
123
Vector3f
d_translation;
125
Quaternion
d_rotation;
127
Vector3f
d_pivot;
129
RenderEffect
* d_effect;
131
Vector2f
d_texelOffset;
133
mutable
Ogre::Matrix4 d_matrix;
135
mutable
bool
d_matrixValid;
136
#ifdef CEGUI_USE_OGRE_HLMS
137
mutable
Ogre::v1::RenderOperation d_renderOp;
140
mutable
Ogre::v1::HardwareVertexBufferSharedPtr d_hwBuffer;
141
#else
142
mutable
Ogre::RenderOperation d_renderOp;
145
mutable
Ogre::HardwareVertexBufferSharedPtr d_hwBuffer;
146
#endif
147
mutable
bool
d_sync;
150
typedef
std::vector<BatchInfo>
BatchList
;
152
BatchList
d_batches;
154
typedef
std::vector<OgreVertex>
VertexList
;
156
VertexList
d_vertices;
157
};
158
159
160
}
// End of CEGUI namespace section
161
162
#endif // end of guard _CEGUIOgreGeometryBuffer_h_
CEGUI::GeometryBuffer
Abstract class defining the interface for objects that buffer geometry for later rendering.
Definition:
GeometryBuffer.h:62
CEGUI::OgreRenderer
CEGUI::Renderer implementation for the Ogre engine.
Definition:
RendererModules/Ogre/Renderer.h:89
CEGUI::OgreGeometryBuffer::OgreVertex
vertex structure used internally and also by Ogre.
Definition:
RendererModules/Ogre/GeometryBuffer.h:95
CEGUI::OgreGeometryBuffer::BatchList
std::vector< BatchInfo > BatchList
type of container that tracks BatchInfos.
Definition:
RendererModules/Ogre/GeometryBuffer.h:148
CEGUI
Main namespace for Crazy Eddie's GUI Library.
Definition:
arch_overview.dox:1
CEGUI::Quaternion
Class to represent rotation, avoids Gimbal lock.
Definition:
Quaternion.h:89
CEGUI::OgreGeometryBuffer::BatchInfo
type to track info for per-texture sub batches of geometry
Definition:
RendererModules/Ogre/GeometryBuffer.h:103
CEGUI::Vector2< float >
CEGUI::Vertex
structure that is used to hold details of a single vertex in 3D space.
Definition:
Vertex.h:60
CEGUI::Vector3< float >
CEGUI::Texture
Abstract base class specifying the required interface for Texture objects.
Definition:
Texture.h:75
CEGUI::OgreGeometryBuffer::VertexList
std::vector< OgreVertex > VertexList
type of container used to queue the geometry
Definition:
RendererModules/Ogre/GeometryBuffer.h:152
CEGUI::Colour
Class representing colour values within the system.
Definition:
Colour.h:67
CEGUI::Rect< float >
CEGUI::RenderEffect
Interface for objects that hook into RenderingWindow to affect the rendering process,...
Definition:
RenderEffect.h:60
CEGUI::OgreGeometryBuffer
Implementation of CEGUI::GeometryBuffer for the Ogre engine.
Definition:
RendererModules/Ogre/GeometryBuffer.h:55
CEGUI::OgreTexture
Implementation of the CEGUI::Texture class for the Ogre engine.
Definition:
RendererModules/Ogre/Texture.h:58
cegui
include
CEGUI
RendererModules
Ogre
GeometryBuffer.h
Generated by
1.8.16