Gorgon Game Engine
OpenGL.h
Go to the documentation of this file.
1 
5 #pragma once
6 
7 #include "../GL.h"
8 #include "../Graphics/Color.h"
9 #include "../Containers/Image.h"
10 #include "../OS.h"
11 
12 #ifdef WIN32
13 # ifdef APIENTRY
14 # undef APIENTRY
15 # endif
16 # ifdef APIENTRYP
17 # undef APIENTRYP
18 # endif
19 
20 # define WINDOWS_LEAN_AND_MEAN
21 # include <windows.h>
22 
23 # define APIENTRYP __stdcall *
24 #endif
25 
26 #include <GL/gl.h>
27 
28 #define GL_MAP_READ_BIT 0x0001
29 #define GL_MAP_WRITE_BIT 0x0002
30 #define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
31 #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
32 #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
33 #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
34 #define GL_TEXTURE0 0x84C0
35 #define GL_TEXTURE1 0x84C1
36 #define GL_TEXTURE2 0x84C2
37 #define GL_TEXTURE3 0x84C3
38 #define GL_TEXTURE4 0x84C4
39 #define GL_TEXTURE5 0x84C5
40 #define GL_TEXTURE6 0x84C6
41 #define GL_TEXTURE7 0x84C7
42 #define GL_TEXTURE8 0x84C8
43 #define GL_TEXTURE9 0x84C9
44 #define GL_TEXTURE10 0x84CA
45 #define GL_TEXTURE11 0x84CB
46 #define GL_TEXTURE12 0x84CC
47 #define GL_TEXTURE13 0x84CD
48 #define GL_TEXTURE14 0x84CE
49 #define GL_TEXTURE15 0x84CF
50 #define GL_TEXTURE16 0x84D0
51 #define GL_TEXTURE17 0x84D1
52 #define GL_TEXTURE18 0x84D2
53 #define GL_TEXTURE19 0x84D3
54 #define GL_TEXTURE20 0x84D4
55 #define GL_TEXTURE21 0x84D5
56 #define GL_TEXTURE22 0x84D6
57 #define GL_TEXTURE23 0x84D7
58 #define GL_TEXTURE24 0x84D8
59 #define GL_TEXTURE25 0x84D9
60 #define GL_TEXTURE26 0x84DA
61 #define GL_TEXTURE27 0x84DB
62 #define GL_TEXTURE28 0x84DC
63 #define GL_TEXTURE29 0x84DD
64 #define GL_TEXTURE30 0x84DE
65 #define GL_TEXTURE31 0x84DF
66 #define GL_ARRAY_BUFFER 0x8892
67 #define GL_STREAM_DRAW 0x88E0
68 #define GL_STREAM_READ 0x88E1
69 #define GL_STREAM_COPY 0x88E2
70 #define GL_STATIC_DRAW 0x88E4
71 #define GL_STATIC_READ 0x88E5
72 #define GL_STATIC_COPY 0x88E6
73 #define GL_DYNAMIC_DRAW 0x88E8
74 #define GL_DYNAMIC_READ 0x88E9
75 #define GL_DYNAMIC_COPY 0x88EA
76 #define GL_UNIFORM_BUFFER 0x8A11
77 #define GL_FRAGMENT_SHADER 0x8B30
78 #define GL_VERTEX_SHADER 0x8B31
79 #define GL_COMPILE_STATUS 0x8B81
80 #define GL_LINK_STATUS 0x8B82
81 #define GL_INFO_LOG_LENGTH 0x8B84
82 #define GL_GEOMETRY_SHADER 0x8DD9
83 #define GL_COLOR_ATTACHMENT0 0x8CE0
84 #define GL_COLOR_ATTACHMENT1 0x8CE1
85 #define GL_COLOR_ATTACHMENT2 0x8CE2
86 #define GL_COLOR_ATTACHMENT3 0x8CE3
87 #define GL_COLOR_ATTACHMENT4 0x8CE4
88 #define GL_GENERATE_MIPMAP 0x8191
89 #define GL_DEPTH_ATTACHMENT 0x8D00
90 #define GL_STENCIL_ATTACHMENT 0x8D20
91 #define GL_FRAMEBUFFER 0x8D40
92 #define GL_RENDERBUFFER 0x8D41
93 
94 
95 typedef char GLchar;
96 typedef ptrdiff_t GLsizeiptr;
97 typedef ptrdiff_t GLintptr;
98 
99 typedef void (APIENTRY *DEBUGPROC)(GLenum source,
100  GLenum type,
101  GLuint id,
102  GLenum severity,
103  GLsizei length,
104  const GLchar *message,
105  const void *userParam);
106 #ifndef LINUX
107 typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, GLenum *bufs);
108 typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
109 typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar * name);
110 typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
111 typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
112 typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
113 typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
114 typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
115 typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
116 typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
117 typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
118 typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
119 typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
120 typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
121 typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
122 typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
123 typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
124 typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
125 typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
126 typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
127 typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum);
128 typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
129 typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
130 typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
131 typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
132 typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
133 typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar* uniformBlockName);
134 typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name);
135 typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
136 typedef void * (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
137 typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
138 typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length);
139 typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
140 typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
141 typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, GLfloat* v0);
142 typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, GLfloat* v0);
143 typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, GLfloat* v0);
144 typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
145 typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat* value);
146 typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat* value);
147 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat* value);
148 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat* value);
149 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat* value);
150 typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
151 typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
152 typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
153 typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
154 typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
155 
156 typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (DEBUGPROC callback, void * userParam);
157 
158 //frame buffer
159 typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
160 typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum);
161 typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei, const GLuint *);
162 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum, GLenum, GLenum, GLuint, GLint);
163 typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (int, GLuint*);
164 
165 extern PFNGLACTIVETEXTUREPROC glActiveTexture;
166 #endif
167 
168 typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFER) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
169 typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGE) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
170 typedef void (APIENTRYP PFNGLGENRENDERBUFFERS) (GLsizei n, GLuint *renderbuffers);
171 typedef void (APIENTRYP PFNGLDELETERENDERBUFFERS) (GLsizei n, const GLuint *renderbuffers);
172 typedef void (APIENTRYP PFNGLBINDRENDERBUFFER) (GLenum target, GLuint renderbuffer);
173 
174 extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
175 extern PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
176 extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
177 extern PFNGLATTACHSHADERPROC glAttachShader;
178 extern PFNGLBINDBUFFERPROC glBindBuffer;
179 extern PFNGLBINDBUFFERBASEPROC glBindBufferBase;
180 extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
181 extern PFNGLBUFFERDATAPROC glBufferData;
182 extern PFNGLBUFFERSUBDATAPROC glBufferSubData;
183 extern PFNGLCOMPILESHADERPROC glCompileShader;
184 extern PFNGLCREATEPROGRAMPROC glCreateProgram;
185 extern PFNGLCREATESHADERPROC glCreateShader;
186 extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
187 extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
188 extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
189 extern PFNGLDELETESHADERPROC glDeleteShader;
190 extern PFNGLDETACHSHADERPROC glDetachShader;
191 extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
192 extern PFNGLGENBUFFERSPROC glGenBuffers;
193 extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
194 extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
195 extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
196 extern PFNGLGETPROGRAMIVPROC glGetProgramiv;
197 extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
198 extern PFNGLGETSHADERIVPROC glGetShaderiv;
199 extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
200 extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
201 extern PFNGLLINKPROGRAMPROC glLinkProgram;
202 extern PFNGLMAPBUFFERPROC glMapBuffer;
203 extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
204 extern PFNGLSHADERSOURCEPROC glShaderSource;
205 extern PFNGLUNIFORM1FPROC glUniform1f;
206 extern PFNGLUNIFORM1IPROC glUniform1i;
207 extern PFNGLUNIFORM2FVPROC glUniform2fv;
208 extern PFNGLUNIFORM3FVPROC glUniform3fv;
209 extern PFNGLUNIFORM4FVPROC glUniform4fv;
210 extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
211 extern PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
212 extern PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
213 extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
214 extern PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
215 extern PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
216 extern PFNGLUNMAPBUFFERPROC glUnmapBuffer;
217 extern PFNGLUSEPROGRAMPROC glUseProgram;
218 extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
219 extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
220 extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
221 
222 extern PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
223 
224 //frame buffer
225 extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
226 extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
227 extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
228 extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
229 extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
230 extern PFNGLBINDRENDERBUFFER glBindRenderbuffer;
231 extern PFNGLRENDERBUFFERSTORAGE glRenderbufferStorage;
232 extern PFNGLGENRENDERBUFFERS glGenRenderbuffers;
233 extern PFNGLFRAMEBUFFERRENDERBUFFER glFramebufferRenderbuffer;
234 extern PFNGLDELETERENDERBUFFERS glDeleteRenderbuffers;
235 
236 namespace Gorgon {
237  namespace GL {
238 
239  void LoadFunctions();
240 
241  }
242 }
243 
244 #ifdef WIN32
245 # undef APIENTRY
246 # undef WINGDIAPI
247 #endif
248 
glDeleteShader
PFNGLDELETESHADERPROC glDeleteShader
Definition: OpenGL.cpp:38
Gorgon::Geometry::basic_Bounds
This class represents boundaries of 2D objects.
Definition: Bounds.h:27
glDeleteRenderbuffers
PFNGLDELETERENDERBUFFERS glDeleteRenderbuffers
Definition: OpenGL.cpp:81
glGenVertexArrays
PFNGLGENVERTEXARRAYSPROC glGenVertexArrays
Definition: OpenGL.cpp:43
Gorgon::GL::GenerateTexture
Texture GenerateTexture(const Containers::Image &data)
This function generates a texture from the given image data.
Definition: OpenGL.cpp:146
glBindBuffer
PFNGLBINDBUFFERPROC glBindBuffer
Definition: OpenGL.cpp:27
Gorgon::Containers::basic_Image::GetMode
Graphics::ColorMode GetMode() const
Returns the color mode of the image.
Definition: Image.h:1311
Gorgon::GL::settexturedata
void settexturedata(Texture tex, const Containers::Image &data)
Definition: OpenGL.cpp:128
glBindVertexArray
PFNGLBINDVERTEXARRAYPROC glBindVertexArray
Definition: OpenGL.cpp:29
GL_BGR
#define GL_BGR
Definition: OpenGL.cpp:14
Gorgon::GL::Clear
void Clear()
Clears the window pointed by the active context.
Definition: OpenGL.cpp:277
glUnmapBuffer
PFNGLUNMAPBUFFERPROC glUnmapBuffer
Definition: OpenGL.cpp:65
Gorgon::Graphics::ColorMode
ColorMode
Color modes for images.
Definition: Color.h:16
glMapBufferRange
PFNGLMAPBUFFERRANGEPROC glMapBufferRange
Definition: OpenGL.cpp:52
glGenFramebuffers
PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers
Definition: OpenGL.cpp:76
glCreateProgram
PFNGLCREATEPROGRAMPROC glCreateProgram
Definition: OpenGL.cpp:33
glActiveTexture
PFNGLACTIVETEXTUREPROC glActiveTexture
Definition: OpenGL.cpp:21
Gorgon::Graphics::ColorMode::RGB
@ RGB
24bit red, green, blue color mode that has red component in the lowest byte order
Gorgon::Graphics::ColorMode::Invalid
@ Invalid
This is used to mark invalid color data.
glFramebufferRenderbuffer
PFNGLFRAMEBUFFERRENDERBUFFER glFramebufferRenderbuffer
Definition: OpenGL.cpp:80
Gorgon::Geometry::basic_Point::X
T_ X
X coordinate.
Definition: Point.h:368
glDeleteVertexArrays
PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays
Definition: OpenGL.cpp:36
glAttachShader
PFNGLATTACHSHADERPROC glAttachShader
Definition: OpenGL.cpp:26
Gorgon::Containers::basic_Image::RawData
Byte * RawData()
Returns the raw data pointer.
Definition: Image.h:211
Gorgon::GL::debug_proc
void debug_proc(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *)
Definition: OpenGL.cpp:91
Gorgon::Geometry::basic_Size::Height
T_ Height
Height of this size object.
Definition: Size.h:261
glGetAttribLocation
PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation
Definition: OpenGL.cpp:24
glUniformBlockBinding
PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding
Definition: OpenGL.cpp:59
OpenGL.h
Gorgon::Geometry::basic_Bounds::Width
T_ Width() const
Calculates and returns the width of the bounds.
Definition: Bounds.h:130
Gorgon::Graphics::ColorMode::RGBA
@ RGBA
32bit red, green, blue and alpha channel image. Red component is in the lowest byte order and
glVertexAttribIPointer
PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer
Definition: OpenGL.cpp:68
glBufferSubData
PFNGLBUFFERSUBDATAPROC glBufferSubData
Definition: OpenGL.cpp:31
Gorgon::OS::DisplayMessage
void DisplayMessage(const std::string &message)
This function shows a OS message box to display errors, for other messages its better to use in-game ...
Definition: Linux.cpp:104
glGenerateMipmap
PFNGLGENERATEMIPMAPPROC glGenerateMipmap
Definition: OpenGL.cpp:42
glDetachShader
PFNGLDETACHSHADERPROC glDetachShader
Definition: OpenGL.cpp:39
Gorgon::GL::LoadFunctions
void LoadFunctions()
Definition: OpenGL.cpp:281
glUniformMatrix4x2fv
PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv
Definition: OpenGL.cpp:63
Gorgon::Geometry::basic_Bounds::Height
T_ Height() const
Calculates and returns the height of the bounds.
Definition: Bounds.h:135
glUniformMatrix4fv
PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv
Definition: OpenGL.cpp:62
glGetUniformBlockIndex
PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex
Definition: OpenGL.cpp:48
Gorgon::Containers::basic_Image::GetWidth
int GetWidth() const
Returns the width of the image.
Definition: Image.h:1296
Gorgon::GL::SetupContext
void SetupContext(const Geometry::Size &size)
Performs first time initialization on GL context.
Definition: OpenGL.cpp:225
glUniform1f
PFNGLUNIFORM1FPROC glUniform1f
Definition: OpenGL.cpp:54
glShaderSource
PFNGLSHADERSOURCEPROC glShaderSource
Definition: OpenGL.cpp:53
glEnableVertexAttribArray
PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray
Definition: OpenGL.cpp:40
Gorgon::GL::GenerateEmptyTexture
Texture GenerateEmptyTexture(const Geometry::Size &size, Graphics::ColorMode mode)
This function generates a texture from the given image data.
Definition: OpenGL.cpp:154
Gorgon::Graphics::ColorMode::Grayscale
@ Grayscale
8bit gray scale color mode
glCheckFramebufferStatus
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus
Definition: OpenGL.cpp:73
glGenBuffers
PFNGLGENBUFFERSPROC glGenBuffers
Definition: OpenGL.cpp:41
glBindRenderbuffer
PFNGLBINDRENDERBUFFER glBindRenderbuffer
Definition: OpenGL.cpp:77
Gorgon::Geometry::basic_Bounds::Left
T_ Left
Left-most boundary.
Definition: Bounds.h:399
Gorgon
Root namespace for Gorgon Game Engine.
Definition: Any.h:19
Gorgon::Geometry::basic_Size
This class represents a 2D geometric size.
Definition: Size.h:23
Gorgon::GL::FrameBuffer::HardwareSupport
static bool HardwareSupport
Whether hardware supports frame buffers.
Definition: FrameBuffer.h:69
glDeleteFramebuffers
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers
Definition: OpenGL.cpp:74
Gorgon::GL::SetDefaultClear
void SetDefaultClear()
Sets default clear parameters as current.
Definition: OpenGL.cpp:268
glGetProgramInfoLog
PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog
Definition: OpenGL.cpp:44
glGetProgramiv
PFNGLGETPROGRAMIVPROC glGetProgramiv
Definition: OpenGL.cpp:45
glCompileShader
PFNGLCOMPILESHADERPROC glCompileShader
Definition: OpenGL.cpp:32
Gorgon::GL::FrameBuffer::Use
void Use()
Begin using this frame buffer.
Definition: FrameBuffer.cpp:65
Gorgon::Utils::Logger
Eases logging procedure by appending necessary information to the given data and streams to a standar...
Definition: Logging.h:19
glFramebufferTexture2D
PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D
Definition: OpenGL.cpp:75
glUniformMatrix4x3fv
PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv
Definition: OpenGL.cpp:64
Gorgon::GL::DestroyTexture
void DestroyTexture(Texture texture)
Destroys the given texture.
Definition: OpenGL.cpp:213
glUniform1i
PFNGLUNIFORM1IPROC glUniform1i
Definition: OpenGL.cpp:55
glUniform4fv
PFNGLUNIFORM4FVPROC glUniform4fv
Definition: OpenGL.cpp:58
Gorgon::GL::ResizeTexture
void ResizeTexture(Texture texture, const Geometry::Size &size, Graphics::ColorMode mode)
Resizes the given texture to the specified size.
Definition: OpenGL.cpp:169
GL_DEBUG_OUTPUT
#define GL_DEBUG_OUTPUT
Definition: OpenGL.cpp:16
glGetShaderInfoLog
PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog
Definition: OpenGL.cpp:46
Gorgon::GL::FrameBuffer
This is a frame buffer object that can be used for render to texture tasks.
Definition: FrameBuffer.h:13
Gorgon::Graphics::ColorMode::Alpha
@ Alpha
8bit alpha only color mode
Gorgon::Geometry::basic_Point
This class represents a 2D point.
Definition: Point.h:32
glLinkProgram
PFNGLLINKPROGRAMPROC glLinkProgram
Definition: OpenGL.cpp:50
glUniformMatrix3fv
PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv
Definition: OpenGL.cpp:60
glRenderbufferStorage
PFNGLRENDERBUFFERSTORAGE glRenderbufferStorage
Definition: OpenGL.cpp:78
glBindBufferBase
PFNGLBINDBUFFERBASEPROC glBindBufferBase
Definition: OpenGL.cpp:28
glBlendFuncSeparate
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate
Definition: OpenGL.cpp:69
glUniformMatrix3x2fv
PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv
Definition: OpenGL.cpp:61
glUniform2fv
PFNGLUNIFORM2FVPROC glUniform2fv
Definition: OpenGL.cpp:56
Gorgon::Containers::basic_Image
This class is a container for image data.
Definition: Image.h:19
glUseProgram
PFNGLUSEPROGRAMPROC glUseProgram
Definition: OpenGL.cpp:66
Gorgon::GL::SetDefaultBlending
void SetDefaultBlending()
Sets default blending parameters as current.
Definition: OpenGL.cpp:264
glMapBuffer
PFNGLMAPBUFFERPROC glMapBuffer
Definition: OpenGL.cpp:51
Gorgon::Geometry::basic_Point::Y
T_ Y
Y coordinate.
Definition: Point.h:371
Gorgon::Geometry::basic_Size::Width
T_ Width
Width of this size object.
Definition: Size.h:258
glDebugMessageCallback
PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback
Definition: OpenGL.cpp:70
glVertexAttribPointer
PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer
Definition: OpenGL.cpp:67
glDeleteBuffers
PFNGLDELETEBUFFERSPROC glDeleteBuffers
Definition: OpenGL.cpp:35
glBindAttribLocation
PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation
Definition: OpenGL.cpp:25
glBufferData
PFNGLBUFFERDATAPROC glBufferData
Definition: OpenGL.cpp:30
GL_BGRA
#define GL_BGRA
Definition: OpenGL.cpp:15
Gorgon::GL::RenderToScreen
void RenderToScreen()
Stops rendering to a texture and start rendering to a buffer.
Definition: OpenGL.cpp:221
Gorgon::GL::RenderToTexture
void RenderToTexture(FrameBuffer &buffer)
Begins using the given frame buffer.
Definition: OpenGL.cpp:217
Gorgon::Containers::basic_Image::GetHeight
int GetHeight() const
Returns the height of the image.
Definition: Image.h:1301
glCreateShader
PFNGLCREATESHADERPROC glCreateShader
Definition: OpenGL.cpp:34
Gorgon::GL::Resize
void Resize(const Geometry::Size &size)
Resizes the active context.
Definition: OpenGL.cpp:273
glBindFramebuffer
PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer
Definition: OpenGL.cpp:72
glGetUniformLocation
PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation
Definition: OpenGL.cpp:49
glDrawBuffers
PFNGLDRAWBUFFERSPROC glDrawBuffers
Definition: OpenGL.cpp:23
Gorgon::GL::CopyToTexture
void CopyToTexture(Texture texture, const Containers::Image &data, Geometry::Point target)
Copies the data from the given image to the texture starting from the given target.
Definition: OpenGL.cpp:181
glDeleteProgram
PFNGLDELETEPROGRAMPROC glDeleteProgram
Definition: OpenGL.cpp:37
Gorgon::GL::UpdateTexture
void UpdateTexture(Texture texture, const Containers::Image &data)
Updates the given texture to contain the given data.
Definition: OpenGL.cpp:177
glUniform3fv
PFNGLUNIFORM3FVPROC glUniform3fv
Definition: OpenGL.cpp:57
Gorgon::GL::log
Gorgon::Utils::Logger log
The logger that is used for GL operations. Default is unset and will not log anything....
Definition: Shader.cpp:19
glGetShaderiv
PFNGLGETSHADERIVPROC glGetShaderiv
Definition: OpenGL.cpp:47
Gorgon::GL::getGLColorMode
GLenum getGLColorMode(Graphics::ColorMode mode)
Definition: OpenGL.cpp:107
FrameBuffer.h
Gorgon::Containers::basic_Image::GetSize
Geometry::Size GetSize() const
Returns the size of the image.
Definition: Image.h:1291
Gorgon::Geometry::basic_Bounds::Top
T_ Top
Top-most boundary.
Definition: Bounds.h:402
glGenRenderbuffers
PFNGLGENRENDERBUFFERS glGenRenderbuffers
Definition: OpenGL.cpp:79