Crazy Eddie's GUI System 0.8.7
GL3GeometryBuffer.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 - 2013 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 _CEGUIOpenGL3GeometryBuffer_h_
28#define _CEGUIOpenGL3GeometryBuffer_h_
29
30#include "CEGUI/RendererModules/OpenGL/GeometryBufferBase.h"
31
32namespace CEGUI
33{
34class OpenGL3Shader;
35class OpenGL3StateChangeWrapper;
36class OpenGL3Renderer;
37
39class OPENGL_GUIRENDERER_API OpenGL3GeometryBuffer : public OpenGLGeometryBufferBase
40{
41public:
44 virtual ~OpenGL3GeometryBuffer();
45
46 void initialiseOpenGLBuffers();
49 void deinitialiseOpenGLBuffers();
50 void updateOpenGLBuffers();
51
52 // implementation/overrides of members from GeometryBuffer
53 void draw() const;
54 void appendGeometry(const Vertex* const vbuff, uint vertex_count);
55 void reset();
56
57protected:
65 const GLint d_shaderPosLoc;
69 const GLint d_shaderColourLoc;
76};
77
78}
79
80#endif
81
OpenGL3 based implementation of the GeometryBuffer interface.
Definition: GL3GeometryBuffer.h:40
GLuint d_verticesVBO
OpenGL vbo containing all vertex data.
Definition: GL3GeometryBuffer.h:61
const GLint d_shaderStandardMatrixLoc
Matrix uniform location inside the shader, for OpenGL.
Definition: GL3GeometryBuffer.h:71
const GLint d_shaderColourLoc
Color variable location inside the shader, for OpenGL.
Definition: GL3GeometryBuffer.h:69
const GLint d_shaderPosLoc
Position variable location inside the shader, for OpenGL.
Definition: GL3GeometryBuffer.h:65
GLuint d_bufferSize
Size of the buffer that is currently in use.
Definition: GL3GeometryBuffer.h:75
OpenGL3GeometryBuffer(OpenGL3Renderer &owner)
Constructor.
OpenGL3StateChangeWrapper * d_glStateChanger
Pointer to the OpenGL state changer wrapper that was created inside the Renderer.
Definition: GL3GeometryBuffer.h:73
const GLint d_shaderTexCoordLoc
TexCoord variable location inside the shader, for OpenGL.
Definition: GL3GeometryBuffer.h:67
void configureVertexArray() const
The functions first binds the vbo and then sets it up for rendering.
void reset()
Clear all buffered data and reset the GeometryBuffer to the default state.
void appendGeometry(const Vertex *const vbuff, uint vertex_count)
Append a number of vertices from an array to the GeometryBuffer.
GLuint d_verticesVAO
OpenGL vao used for the vertices.
Definition: GL3GeometryBuffer.h:59
CEGUI::OpenGL3Shader *& d_shader
Reference to the OpenGL shader inside the Renderer, that is used to render all geometry.
Definition: GL3GeometryBuffer.h:63
void draw() const
Draw the geometry buffered within this GeometryBuffer object.
Renderer class to interface with desktop OpenGL version >= 3.2 or OpenGL ES version >= 2.
Definition: GL3Renderer.h:55
Definition: Shader.h:45
OpenGL3StateChangeWrapper - wraps OpenGL calls and checks for redundant calls beforehand.
Definition: StateChangeWrapper.h:49
OpenGL based implementation of the GeometryBuffer interface.
Definition: GeometryBufferBase.h:53
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
structure that is used to hold details of a single vertex in 3D space.
Definition: Vertex.h:42