Guiliani
Version 2.5 revision 6773 (build 33)
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
OGL_API.h
1
/*
2
* Copyright (C) TES Electronic Solutions GmbH,
3
* All Rights Reserved.
4
* Contact: info@guiliani.de
5
*
6
* This file is part of the Guiliani HMI framework
7
* for the development of graphical user interfaces on embedded systems.
8
*/
9
10
#ifndef __OGL_API_H__
11
#define __OGL_API_H__
12
13
// OpenGL
14
15
#if defined(WIN32)
16
#include <windows.h>
// needed for gl.h on windows
17
#define GuilianiGLGetProcAddress wglGetProcAddress
18
#elif defined(__linux__)
19
#include <SDL.h>
20
#define GuilianiGLGetProcAddress SDL_GL_GetProcAddress
21
#endif
22
23
#if defined SYSTEM_NAME_DARWIN
24
#include <OpenGL/gl.h>
25
#include <OpenGL/glext.h>
26
#else
27
#include <GL/gl.h>
28
#include <GL/glext.h>
29
#endif
30
31
// if version 2.0 of OpenGL is defined, we can use shaders instead of fixed function-pipeline
32
#ifdef GL_VERSION_2_0
33
#define GUILIANI_USE_GL_SHADERS 1
34
#endif
35
36
#if defined (GUILIANI_USE_OGL)
37
#if !defined SYSTEM_NAME_DARWIN
38
// API mappings
39
// Use extension for VBO and FBO
40
//defines for the VBO extensions
41
#define glDeleteBuffers CGfxWrapGL::glDeleteBuffers_Guiliani
42
#define glBindBuffer CGfxWrapGL::glBindBuffer_Guiliani
43
#define glGenBuffers CGfxWrapGL::glGenBuffers_Guiliani
44
#define glBufferData CGfxWrapGL::glBufferData_Guiliani
45
46
//defines for the FBO extensions
47
#define glGenFramebuffers CGfxWrapGL::glGenFramebuffers_Guiliani
48
#define glBindFramebuffer CGfxWrapGL::glBindFramebuffer_Guiliani
49
#define glFramebufferTexture2D CGfxWrapGL::glFramebufferTexture2D_Guiliani
50
#define glCheckFramebufferStatus CGfxWrapGL::glCheckFramebufferStatus_Guiliani
51
#define glDeleteFramebuffers CGfxWrapGL::glDeleteFramebuffers_Guiliani
52
53
#if GUILIANI_USE_GL_SHADERS == 1
54
// defines for shaders
55
#define glBlendEquationSeparate CGfxWrapGL::glBlendEquationSeparate_Guiliani
56
#define glDrawBuffers CGfxWrapGL::glDrawBuffers_Guiliani
57
#define glStencilOpSeperate CGfxWrapGL::glStencilOpSeparate_Guiliani
58
#define glStencilFuncSeperate CGfxWrapGL::glStencilFuncSeparate_Guiliani
59
#define glStencilMaskSeperate CGfxWrapGL::glStencilMaskSeparate_Guiliani
60
#define glAttachShader CGfxWrapGL::glAttachShader_Guiliani
61
#define glBindAttribLocation CGfxWrapGL::glBindAttribLocation_Guiliani
62
#define glCompileShader CGfxWrapGL::glCompileShader_Guiliani
63
#define glCreateProgram CGfxWrapGL::glCreateProgram_Guiliani
64
#define glCreateShader CGfxWrapGL::glCreateShader_Guiliani
65
#define glDeleteProgram CGfxWrapGL::glDeleteProgram_Guiliani
66
#define glDeleteShader CGfxWrapGL::glDeleteShader_Guiliani
67
#define glDetachShader CGfxWrapGL::glDetachShader_Guiliani
68
#define glDisableVertexAttribArray CGfxWrapGL::glDisableVertexAttribArray_Guiliani
69
#define glEnableVertexAttribArray CGfxWrapGL::glEnableVertexAttribArray_Guiliani
70
#define glGetActiveAttrib CGfxWrapGL::glGetActiveAttrib_Guiliani
71
#define glGetActiveUniform CGfxWrapGL::glGetActiveUniform_Guiliani
72
#define glGetAttachedShaders CGfxWrapGL::glGetAttachedShaders_Guiliani
73
#define glGetAttribLocation CGfxWrapGL::glGetAttribLocation_Guiliani
74
#define glGetProgramiv CGfxWrapGL::glGetProgramiv_Guiliani
75
#define glGetProgramInfoLog CGfxWrapGL::glGetProgramInfoLog_Guiliani
76
#define glGetShaderiv CGfxWrapGL::glGetShaderiv_Guiliani
77
#define glGetShaderInfoLog CGfxWrapGL::glGetShaderInfoLog_Guiliani
78
#define glGetShaderSource CGfxWrapGL::glGetShaderSource_Guiliani
79
#define glGetUniformLocation CGfxWrapGL::glGetUniformLocation_Guiliani
80
#define glGetUniformfv CGfxWrapGL::glGetUniformfv_Guiliani
81
#define glGetUniformiv CGfxWrapGL::glGetUniformiv_Guiliani
82
#define glGetVertexAttribdv CGfxWrapGL::glGetVertexAttribdv_Guiliani
83
#define glGetVertexAttribfv CGfxWrapGL::glGetVertexAttribfv_Guiliani
84
#define glGetVertexAttribiv CGfxWrapGL::glGetVertexAttribiv_Guiliani
85
#define glGetVertexAttribPointerv CGfxWrapGL::glGetVertexAttribPointerv_Guiliani
86
#define glIsProgram CGfxWrapGL::glIsProgram_Guiliani
87
#define glIsShader CGfxWrapGL::glIsShader_Guiliani
88
#define glLinkProgram CGfxWrapGL::glLinkProgram_Guiliani
89
#define glShaderSource CGfxWrapGL::glShaderSource_Guiliani
90
#define glUseProgram CGfxWrapGL::glUseProgram_Guiliani
91
#define glUniform1f CGfxWrapGL::glUniform1f_Guiliani
92
#define glUniform2f CGfxWrapGL::glUniform2f_Guiliani
93
#define glUniform3f CGfxWrapGL::glUniform3f_Guiliani
94
#define glUniform4f CGfxWrapGL::glUniform4f_Guiliani
95
#define glUniform1i CGfxWrapGL::glUniform1i_Guiliani
96
#define glUniform2i CGfxWrapGL::glUniform2i_Guiliani
97
#define glUniform3i CGfxWrapGL::glUniform3i_Guiliani
98
#define glUniform4i CGfxWrapGL::glUniform4i_Guiliani
99
#define glUniform1fv CGfxWrapGL::glUniform1fv_Guiliani
100
#define glUniform2fv CGfxWrapGL::glUniform2fv_Guiliani
101
#define glUniform3fv CGfxWrapGL::glUniform3fv_Guiliani
102
#define glUniform4fv CGfxWrapGL::glUniform4fv_Guiliani
103
#define glUniform1iv CGfxWrapGL::glUniform1iv_Guiliani
104
#define glUniform2iv CGfxWrapGL::glUniform2iv_Guiliani
105
#define glUniform3iv CGfxWrapGL::glUniform3iv_Guiliani
106
#define glUniform4iv CGfxWrapGL::glUniform4iv_Guiliani
107
#define glUniformMatrix2fv CGfxWrapGL::glUniformMatrix2fv_Guiliani
108
#define glUniformMatrix3fv CGfxWrapGL::glUniformMatrix3fv_Guiliani
109
#define glUniformMatrix4fv CGfxWrapGL::glUniformMatrix4fv_Guiliani
110
#define glValidateProgram CGfxWrapGL::glValidateProgram_Guiliani
111
#define glVertexAttrib1d CGfxWrapGL::glVertexAttrib1d_Guiliani
112
#define glVertexAttrib1dv CGfxWrapGL::glVertexAttrib1dv_Guiliani
113
#define glVertexAttrib1f CGfxWrapGL::glVertexAttrib1f_Guiliani
114
#define glVertexAttrib1fv CGfxWrapGL::glVertexAttrib1fv_Guiliani
115
#define glVertexAttrib1s CGfxWrapGL::glVertexAttrib1s_Guiliani
116
#define glVertexAttrib1sv CGfxWrapGL::glVertexAttrib1sv_Guiliani
117
#define glVertexAttrib2d CGfxWrapGL::glVertexAttrib2d_Guiliani
118
#define glVertexAttrib2dv CGfxWrapGL::glVertexAttrib2dv_Guiliani
119
#define glVertexAttrib2f CGfxWrapGL::glVertexAttrib2f_Guiliani
120
#define glVertexAttrib2fv CGfxWrapGL::glVertexAttrib2fv_Guiliani
121
#define glVertexAttrib2s CGfxWrapGL::glVertexAttrib2s_Guiliani
122
#define glVertexAttrib2sv CGfxWrapGL::glVertexAttrib2sv_Guiliani
123
#define glVertexAttrib3d CGfxWrapGL::glVertexAttrib3d_Guiliani
124
#define glVertexAttrib3dv CGfxWrapGL::glVertexAttrib3dv_Guiliani
125
#define glVertexAttrib3f CGfxWrapGL::glVertexAttrib3f_Guiliani
126
#define glVertexAttrib3fv CGfxWrapGL::glVertexAttrib3fv_Guiliani
127
#define glVertexAttrib3s CGfxWrapGL::glVertexAttrib3s_Guiliani
128
#define glVertexAttrib3sv CGfxWrapGL::glVertexAttrib3sv_Guiliani
129
#define glVertexAttrib4Nbv CGfxWrapGL::glVertexAttrib4Nbv_Guiliani;
130
#define glVertexAttrib4Niv CGfxWrapGL::glVertexAttrib4Niv_Guiliani;
131
#define glVertexAttrib4Nsv CGfxWrapGL::glVertexAttrib4Nsv_Guiliani;
132
#define glVertexAttrib4Nub CGfxWrapGL::glVertexAttrib4Nub_Guiliani;
133
#define glVertexAttrib4Nubv CGfxWrapGL::glVertexAttrib4Nubv_Guiliani;
134
#define glVertexAttrib4Nuiv CGfxWrapGL::glVertexAttrib4Nuiv_Guiliani;
135
#define glVertexAttrib4Nusv CGfxWrapGL::glVertexAttrib4Nusv_Guiliani;
136
#define glVertexAttrib4bv CGfxWrapGL::glVertexAttrib4bv_Guiliani;
137
#define glVertexAttrib4d CGfxWrapGL::glVertexAttrib4d_Guiliani
138
#define glVertexAttrib4dv CGfxWrapGL::glVertexAttrib4dv_Guiliani
139
#define glVertexAttrib4f CGfxWrapGL::glVertexAttrib4f_Guiliani
140
#define glVertexAttrib4fv CGfxWrapGL::glVertexAttrib4fv_Guiliani
141
#define glVertexAttrib4iv CGfxWrapGL::glVertexAttrib4iv_Guiliani
142
#define glVertexAttrib4s CGfxWrapGL::glVertexAttrib4s_Guiliani
143
#define glVertexAttrib4sv CGfxWrapGL::glVertexAttrib4sv_Guiliani
144
#define glVertexAttrib4ubv CGfxWrapGL::glVertexAttrib4ubv_Guiliani;
145
#define glVertexAttrib4uiv CGfxWrapGL::glVertexAttrib4uiv_Guiliani;
146
#define glVertexAttrib4usv CGfxWrapGL::glVertexAttrib4usv_Guiliani
147
#define glVertexAttribPointer CGfxWrapGL::glVertexAttribPointer_Guiliani
148
#endif
149
150
#endif
151
#endif
152
153
// Fixpoint environments (embedded targets) usually only support OpenGL ES.
154
// Float is usually supported on (non-ES) OpenGL desktop computers.
155
// Therefore, we do a simple mapping:
156
// Fixpoint -> OpenGL ES
157
// Float -> OpenGL
158
159
#if defined eC_FIXPOINT && defined GUILIANI_USE_OGL
160
#error Fixpoint is not supported in OGL and OGLES2 mode!
161
#endif
162
163
// maps the gl calls
164
#if defined eC_FIXPOINT
165
166
#define GL_EC_VALUE GL_FIXED
167
#define glTexEnvV glTexEnvx
168
#define glScaleV glScalex
169
#define glColor4V glColor4x
170
#define glOrthoV glOrthox
171
#define glFrustumV glFrustumx
172
#define glTranslateV glTranslatex
173
#define glClearColorV glClearColorx
174
#define glTexParameterV glTexParameterx
175
#define glTexEnvV glTexEnvx
176
#define glLoadMatrixV(m) glLoadMatrixx((GLfixed*)(m))
177
#define glMultMatrixV(m) glMultMatrixx((GLfixed*)(m))
178
#define glLineWidthV glLineWidthx
179
#define glClearDepthV glClearDepthx
180
// Use self implemented routine here. No more dependencies to glu library,
181
// when gluPerspectivex is not needed.
182
#define gluPerspectiveV GETGFX_GL.SetPerspectiveProjection
183
#define glRotateV glRotatex
184
#define glNormal3V glNormal3x
185
#define glMaterialV glMaterialx
186
#define glMaterialVv(a, b, c) glMaterialxv(a, b, (GLfixed*)(c))
187
#define glLightV glLightx
188
#define glLightVv(a, b, c) glLightxv(a, b, (GLfixed*)(c))
189
#define glLightModelVv(a, b) glLightModelxv(a, (GLfixed*)(b))
190
#define glGetV(a, b) glGetFixedv(a, (GLfixed*)(b))
191
192
#else
193
194
#if GUILIANI_USE_GL_SHADERS == 1
195
196
// when using shaders some gl-function are getting re-mapped for simplicity
197
#define glTranslateV GETGFX_GL.SetTranslation
198
#define glColor4V(r, g, b, a) glUniform4f(glGetUniformLocation(GETGFX_GL.GetShaderID(), "Color"), eC_ToFloat(r), eC_ToFloat(g), eC_ToFloat(b), eC_ToFloat(a))
199
#define glOrthoV GETGFX_GL.SetOrthoProjection
200
#define glFrustumV GETGFX_GL.SetFrustumProjection
201
#define glRotateV(a, b, c, d) GETGFX_GL.SetRotation(a, b, c, d)
202
#define glScaleV GETGFX_GL.SetScaling
203
204
#undef GL_PROJECTION
205
#define GL_PROJECTION CGfxWrapGL::MT_PROJECTION
206
207
#undef GL_MODELVIEW
208
#define GL_MODELVIEW CGfxWrapGL::MT_MODELVIEW
209
210
// re-map GL-constants to point to locations of vertex-attributes
211
#undef GL_VERTEX_ARRAY
212
#define GL_VERTEX_ARRAY 0
213
214
#undef GL_TEXTURE_COORD_ARRAY
215
#define GL_TEXTURE_COORD_ARRAY 1
216
217
#define glMatrixMode GETGFX_GL.SetMatrixMode
218
#define glLoadIdentity GETGFX_GL.LoadIdentity
219
#define glPushMatrix GETGFX_GL.PushMatrix
220
#define glPopMatrix GETGFX_GL.PopMatrix
221
#define glLoadMatrixV GETGFX_GL.SetMatrix
222
#define glEnableClientState glEnableVertexAttribArray
223
#define glDisableClientState glDisableVertexAttribArray
224
#define glVertexPointer(a, b, c, d) glVertexAttribPointer(GL_VERTEX_ARRAY, a, b, GL_FALSE, c, d)
225
#define glTexCoordPointer(a, b, c, d) glVertexAttribPointer(GL_TEXTURE_COORD_ARRAY, a, b, GL_FALSE, c, d)
226
227
#else
228
229
#define glTranslateV(x, y, z) glTranslatef(eC_ToFloat(x), eC_ToFloat(y), eC_ToFloat(z))
230
#define glColor4V(r, g, b, a) glColor4f(eC_ToFloat(r), eC_ToFloat(g), eC_ToFloat(b), eC_ToFloat(a))
231
#define glRotateV(a, b, c, d) glRotatef(eC_ToFloat(a), eC_ToFloat(b), eC_ToFloat(c), eC_ToFloat(d))
232
#define glTexEnvV glTexEnvf
233
#define glScaleV glScalef
234
#define glLoadMatrixV(a) glLoadMatrixf(reinterpret_cast<const GLfloat*>(a))
235
#define glMultMatrixV glMultMatrixf
236
#define glNormal3V(x, y, z) glNormal3f(eC_ToFloat(x), eC_ToFloat(y), eC_ToFloat(z))
237
#define glMaterialV(a, b, c) glMaterialf(a, b, eC_ToFloat(c))
238
#define glMaterialVv glMaterialfv
239
#define glLightV(a, b, c) glLightf(a, b, eC_ToFloat(c))
240
#define glLightVv glLightfv
241
#define glLightModelVv glLightModelfv
242
#define glOrthoV(a, b, c, d, e, f) glOrtho(eC_ToFloat(a), eC_ToFloat(b), eC_ToFloat(c), eC_ToFloat(d), eC_ToFloat(e), eC_ToFloat(f))
243
#define glFrustumV(a, b, c, d, e, f) glFrustum(eC_ToFloat(a), eC_ToFloat(b), eC_ToFloat(c), eC_ToFloat(d), eC_ToFloat(e), eC_ToFloat(f))
244
245
#endif
246
247
#define GL_EC_VALUE GL_FLOAT
248
#define glClearColorV(r, g, b, a) glClearColor(eC_ToFloat(r), eC_ToFloat(g), eC_ToFloat(b), eC_ToFloat(a))
249
#define glTexParameterV(target, pname, param) glTexParameterf(eC_ToFloat(target), eC_ToFloat(pname), eC_ToFloat(param))
250
#define glLineWidthV glLineWidth
251
#define glClearDepthV(a) glClearDepth(eC_ToFloat(a))
252
#define gluPerspectiveV GETGFX_GL.SetPerspectiveProjection
253
#define glGetV glGetFloatv
254
255
#endif
256
257
#endif
Include
Platform
GL
OGL_API.h
Generated by
1.8.4