Crazy Eddie's GUI System 0.8.7
Loading...
Searching...
No Matches
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:
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
base class for properties able to do native set/get
Definition TypedProperty.h:50
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