Guiliani
Version 2.6 revision 7293 (documentation build 12)
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.9.4