network: code uglification; fixed bug with weapon switching (i hope)
[d2df-sdl.git] / src / nogl / noGLES1.inc
bloba4c6589293b5299caae67450658a663e3330134c
1 implementation
3   uses SDL2;
5   const
6     GL_FLOAT = $1406;
7     GL_VERTEX_ARRAY = $8074;
8     GL_NORMAL_ARRAY = $8075;
9     GL_COLOR_ARRAY = $8076;
10     GL_TEXTURE_COORD_ARRAY = $8078;
11     GL_TRIANGLES = $0004;
12     GL_TEXTURE0 = $84C0;
13     GL_INVALID_ENUM = $0500;
15   const
16     ValPerVertex = 2;
17     ValPerColor = 4;
18     ValPerCoord = 2;
20   type
21     TArrayFloat = array of GLfloat;
23     TCmds = record
24       mode: GLenum;
25       v, c, t: TArrayFloat;
26     end;
28   var
29     cmds: TCmds;
31   var
32     es_glVertexPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
33     es_glColorPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
34     es_glTexCoordPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
35     es_glEnableClientState: procedure (arr: GLenum); cdecl;
36     es_glDisableClientState: procedure (arr: GLenum); cdecl;
37     es_glDrawArrays: procedure (mode: GLenum; first: GLint; count: GLsizei); cdecl;
38     es_glActiveTexture: procedure(texture: GLenum); cdecl;
39     es_glClientActiveTexture: procedure(texture: GLenum); cdecl;
40     es_glColor4f: procedure(red, green, blue, alpha: GLfloat); cdecl;
42     es_glEnable: procedure (cap: GLenum); cdecl;
43     es_glDisable: procedure (cap: GLenum); cdecl;
44     es_glIsEnabled: function (cap: GLenum): GLBoolean; cdecl;
45     es_glGetString: function (name: GLenum): PChar; cdecl;
46     es_glClearColor: procedure (red, green, blue, alpha: GLclampf); cdecl;
47     es_glClear: procedure (mask: GLbitfield); cdecl;
48     es_glAlphaFunc: procedure (func: GLenum; ref: GLclampf); cdecl;
49     es_glBlendFunc: procedure (sfactor, dfactor: GLenum); cdecl;
50     es_glPointSize: procedure (size: GLfloat); cdecl;
51     es_glLineWidth: procedure (width: GLfloat); cdecl;
52     es_glGetIntegerv: procedure (pname: GLenum; params: PGLint); cdecl;
53     es_glFlush: procedure; cdecl;
54     es_glFinish: procedure; cdecl;
56     es_glLoadIdentity: procedure; cdecl;
57     es_glMatrixMode: procedure (mode: GLenum); cdecl;
58     es_glLoadMatrixf: procedure (m: PGLfloat); cdecl;
59     es_glPushMatrix: procedure; cdecl;
60     es_glPopMatrix: procedure; cdecl;
61     es_glTranslatef: procedure (x, y, z: GLfloat); cdecl;
62     es_glRotatef: procedure (angle, x, y, z: GLfloat); cdecl;
63     es_glScalef: procedure (x, y, z: GLfloat); cdecl;
65     es_glReadPixels: procedure (x, y: GLint; width, height: GLsizei; format,_type: GLenum; pixels: PGLvoid); cdecl;
67     es_glViewport: procedure (x, y: GLint; width, height: GLsizei); cdecl;
68     es_glScissor: procedure (x, y: GLint; width, height: GLsizei); cdecl;
69     es_glStencilMask: procedure (mask: GLuint); cdecl;
70     es_glStencilFunc: procedure (func: GLenum; ref: GLint; mask: GLuint); cdecl;
71     es_glStencilOp: procedure (fail, zfail, zpass: GLenum); cdecl;
72     es_glColorMask: procedure (red: GLboolean; green: GLboolean; blue: GLboolean; alpha: GLboolean); cdecl;
74     es_glBindTexture: procedure (target: GLenum; texture: GLuint); cdecl;
75     es_glGenTextures: procedure (n: GLsizei; textures: PGLuint); cdecl;
76     es_glTexEnvi: procedure (target: GLenum; pname: GLenum; param: GLint); cdecl;
77     es_glTexParameterf: procedure (target: GLenum; pname: GLenum; param: GLfloat); cdecl;
78     es_glTexParameteri: procedure (target: GLenum; pname: GLenum; param: GLint); cdecl;
79     es_glTexImage2D: procedure (target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, _type:GLenum; pixels: PGLvoid); cdecl;
80     es_glTexSubImage2D: procedure (target: GLenum; level: GLint; xoffset, yoffset: GLint; width, height: GLsizei; format, _type: GLenum; pixels: PGLvoid); cdecl;
81     es_glDeleteTextures: procedure (n: GLsizei; textures: PGLuint); cdecl;
83   procedure glEnable(cap: GLenum);
84   begin
85     es_glEnable(cap);
86   end;
88   procedure glDisable(cap: GLenum);
89   begin
90     es_glDisable(cap);
91   end;
93   function glIsEnabled(cap: GLenum): GLboolean;
94   begin
95     result := es_glIsEnabled(cap);
96   end;
98   function glGetString(name: GLenum): PChar;
99   begin
100     result := es_glGetString(name);
101   end;
103   procedure glClearColor(red, green, blue, alpha: GLclampf);
104   begin
105     es_glClearColor(red, green, blue, alpha);
106   end;
108   procedure glClear(mask: GLbitfield);
109   begin
110     es_glClear(mask);
111   end;
113   procedure glAlphaFunc(func: GLenum; ref: GLclampf);
114   begin
115     es_glAlphaFunc(func, ref);
116   end;
118   procedure glBlendFunc(sfactor, dfactor: GLenum);
119   begin
120     es_glBlendFunc(sfactor, dfactor);
121   end;
123   procedure glPointSize(size: GLfloat);
124   begin
125     es_glPointSize(size);
126   end;
128   procedure glLineWidth(width: GLfloat);
129   begin
130     es_glLineWidth(width);
131   end;
133   procedure glGetIntegerv(pname: GLenum; params: PGLint);
134   begin
135     es_glGetIntegerv(pname, params);
136   end;
138   procedure glFlush;
139   begin
140     es_glFlush;
141   end;
143   procedure glFinish;
144   begin
145     es_glFinish;
146   end;
152   procedure glBegin(mode: GLenum);
153   begin
154     assert(cmds.mode = GL_INVALID_ENUM);
155     assert((mode = GL_POINTS) or (mode = GL_LINES) or (mode = GL_QUADS));
156     cmds.mode := mode;
157     SetLength(cmds.v, 0);
158     SetLength(cmds.c, 0);
159     SetLength(cmds.t, 0);
160   end;
162   procedure glEnd;
163     var count: Integer;
164   begin
165     assert(cmds.mode <> GL_INVALID_ENUM);
166     assert(Length(cmds.v) mod ValPerVertex = 0);
167     assert(Length(cmds.c) mod ValPerColor = 0);
168     assert(Length(cmds.t) mod ValPerCoord = 0);
169     if Length(cmds.c) <> 0 then
170       assert(Length(cmds.v) div ValPerVertex = Length(cmds.c) div ValPerColor);
171     if Length(cmds.t) <> 0 then
172       assert(Length(cmds.v) div ValPerVertex = Length(cmds.t) div ValPerCoord);
174     es_glVertexPointer(ValPerVertex, GL_FLOAT, 0, @cmds.v[0]);
175     es_glColorPointer(ValPerColor, GL_FLOAT, 0, @cmds.c[0]);
176     es_glTexCoordPointer(ValPerCoord, GL_FLOAT, 0, @cmds.t[0]);
177     es_glEnableClientState(GL_VERTEX_ARRAY);
178     es_glEnableClientState(GL_COLOR_ARRAY);
179     es_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
180     es_glDisableClientState(GL_NORMAL_ARRAY);
182     if Length(cmds.c) = 0 then
183       es_glDisableClientState(GL_COLOR_ARRAY);
184     if Length(cmds.t) = 0 then
185       es_glDisableClientState(GL_TEXTURE_COORD_ARRAY);
187     if cmds.mode = GL_QUADS then
188       es_glDrawArrays(GL_TRIANGLES, 0, Length(cmds.v) div ValPerVertex)
189     else
190       es_glDrawArrays(cmds.mode, 0, Length(cmds.v) div ValPerVertex);
192     SetLength(cmds.v, 0);
193     SetLength(cmds.c, 0);
194     SetLength(cmds.t, 0);
195     cmds.mode := GL_INVALID_ENUM;
196   end;
198 (* ---------- begin internals ---------- *)
200   procedure AddFloatRaw (var x: TArrayFloat; f: GLfloat);
201     var i: Integer;
202   begin
203     i := Length(x);
204     SetLength(x, i + 1);
205     x[i] := f;
206   end;
208   procedure AddFloatX (var x: TArrayFloat; v: array of GLfloat); inline;
209     var i, j, vpx: Integer;
210   begin
211     i := Length(x);
212     vpx := Length(v);
213     if (cmds.mode = GL_QUADS) and (i div vpx mod 4 = 3) then
214     begin
215       for j := 0 to vpx - 1 do
216         AddFloatRaw(x, x[i - 3*vpx + j]);
217       for j := 0 to vpx - 1 do
218         AddFloatRaw(x, x[i - 1*vpx + j]);
219     end;
220     for j := 0 to vpx - 1 do
221       AddFloatRaw(x, v[j]);
222   end;
224 (* ---------- end internals ---------- *)
226   procedure glVertex2f(x, y: GLfloat);
227   begin
228     AddFloatX(cmds.v, [x, y]);
229   end;
231   procedure glVertex2i(x, y: GLint);
232   begin
233     AddFloatX(cmds.v, [x, y]);
234   end;
236   procedure glColor4f(red, green, blue, alpha: GLfloat);
237   begin
238     if cmds.mode = GL_INVALID_ENUM then
239       es_glColor4f(red, green, blue, alpha)
240     else
241       AddFloatX(cmds.c, [red, green, blue, alpha])
242   end;
244   procedure glColor4ub(red, green, blue, alpha: GLubyte);
245   begin
246     glColor4f(red / 255, green / 255, blue / 255, alpha / 255)
247   end;
249   procedure glColor3ub(red, green, blue: GLubyte);
250   begin
251     glColor4f(red / 255, green / 255, blue / 255, 255)
252   end;
254   procedure glTexCoord2f(s, t: GLfloat);
255   begin
256     AddFloatX(cmds.t, [s, t]);
257   end;
259   procedure glTexCoord2i(s, t: GLint);
260   begin
261     AddFloatX(cmds.t, [s, t]);
262   end;
270   procedure glReadPixels(x, y: GLint; width, height: GLsizei; format, atype: GLenum; pixels: Pointer);
271   begin
272     es_glReadPixels(x, y, width, height, format, atype, pixels);
273   end;
280   procedure glLoadIdentity;
281   begin
282     es_glLoadIdentity;
283   end;
285   procedure glMatrixMode(mode: GLenum);
286   begin
287     es_glMatrixMode(mode);
288   end;
290   procedure glLoadMatrixd(const m: PGLdouble);
291     var
292       i: Integer;
293       n: array [0..15] of GLfloat;
294   begin
295     for i := 0 to 15 do
296       n[i] := m[i];
297     es_glLoadMatrixf(@n[0]);
298   end;
300   procedure glPushMatrix;
301   begin
302     es_glPushMatrix;
303   end;
305   procedure glPopMatrix;
306   begin
307     es_glPopMatrix;
308   end;
310   procedure glTranslatef(x, y, z: GLfloat);
311   begin
312     es_glTranslatef(x, y, z);
313   end;
315   procedure glRotatef(angle, x, y, z: GLfloat);
316   begin
317     es_glRotatef(angle, x, y, z);
318   end;
320   procedure glScalef(x, y, z: GLfloat);
321   begin
322     es_glScalef(x, y, z);
323   end;
330   procedure glViewport(x, y: GLint; width, height: GLsizei);
331   begin
332     es_glViewport(x, y, width, height);
333   end;
335   procedure glScissor(x, y: GLint; width, height: GLsizei);
336   begin
337     es_glScissor(x, y, width, height);
338   end;
340   procedure glStencilMask(mask: GLuint);
341   begin
342     es_glStencilMask(mask);
343   end;
345   procedure glStencilFunc(func: GLenum; ref: GLint; mask: GLuint);
346   begin
347     es_glStencilFunc(func, ref, mask);
348   end;
350   procedure glStencilOp(fail, zfail, zpass: GLenum);
351   begin
352     es_glStencilOp(fail, zfail, zpass);
353   end;
355   procedure glColorMask(red, green, blue, alpha: GLboolean);
356   begin
357     es_glColorMask(red, green, blue, alpha);
358   end;
365   procedure glBindTexture(target: GLenum; texture: GLuint);
366   begin
367     es_glBindTexture(target, texture);
368   end;
370   procedure glGenTextures(n: GLsizei; textures: PGLuint);
371   begin
372     es_glGenTextures(n, textures);
373   end;
375   procedure glTexEnvi(target: GLenum; pname: GLenum; param: GLint);
376   begin
377     es_glTexEnvi(target, pname, param);
378   end;
380   procedure glTexParameterf(target: GLenum; pname: GLenum; param: GLfloat);
381   begin
382     es_glTexParameterf(target, pname, param);
383   end;
385   procedure glTexParameteri(target: GLenum; pname: GLenum; param: GLint);
386   begin
387     es_glTexParameteri(target, pname, param);
388   end;
390   procedure glTexImage2D(target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, atype: GLenum; const pixels: Pointer);
391   begin
392     es_glTexImage2D(target, level, internalformat, width, height, border, format, atype, pixels);
393   end;
395   procedure glTexSubImage2D(target: GLenum; level, xoffset, yoffset: GLint; width, height: GLsizei; format, atype: GLenum; const pixels: Pointer);
396   begin
397     es_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, atype, pixels);
398   end;
400   procedure glDeleteTextures(n: GLsizei; const textures: PGLuint);
401   begin
402     es_glDeleteTextures(n, textures);
403   end;
409   procedure nogl_Init;
410   begin
411     es_glVertexPointer := SDL_GL_GetProcAddress('glVertexPointer');
412     es_glColorPointer := SDL_GL_GetProcAddress('glColorPointer');
413     es_glTexCoordPointer := SDL_GL_GetProcAddress('glTexCoordPointer');
414     es_glEnableClientState := SDL_GL_GetProcAddress('glEnableClientState');
415     es_glDisableClientState := SDL_GL_GetProcAddress('glDisableClientState');
416     es_glDrawArrays := SDL_GL_GetProcAddress('glDrawArrays');
417     es_glActiveTexture := SDL_GL_GetProcAddress('glActiveTexture');
418     es_glClientActiveTexture := SDL_GL_GetProcAddress('glClientActiveTexture');
419     es_glColor4f := SDL_GL_GetProcAddress('glColor4f');
421     es_glEnable := SDL_GL_GetProcAddress('glEnable');
422     es_glDisable := SDL_GL_GetProcAddress('glDisable');
423     es_glIsEnabled := SDL_GL_GetProcAddress('glIsEnabled');
424     es_glGetString := SDL_GL_GetProcAddress('glGetString');
425     es_glClearColor := SDL_GL_GetProcAddress('glClearColor');
426     es_glClear := SDL_GL_GetProcAddress('glClear');
427     es_glAlphaFunc := SDL_GL_GetProcAddress('glAlphaFunc');
428     es_glBlendFunc := SDL_GL_GetProcAddress('glBlendFunc');
429     es_glPointSize := SDL_GL_GetProcAddress('glPointSize');
430     es_glLineWidth := SDL_GL_GetProcAddress('glLineWidth');
431     es_glGetIntegerv := SDL_GL_GetProcAddress('glGetIntegerv');
432     es_glFlush := SDL_GL_GetProcAddress('glFlush');
433     es_glFinish := SDL_GL_GetProcAddress('glFinish');
435     es_glLoadIdentity := SDL_GL_GetProcAddress('glLoadIdentity');
436     es_glMatrixMode := SDL_GL_GetProcAddress('glMatrixMode');
437     es_glLoadMatrixf := SDL_GL_GetProcAddress('glLoadMatrixf');
438     es_glPushMatrix := SDL_GL_GetProcAddress('glPushMatrix');
439     es_glPopMatrix := SDL_GL_GetProcAddress('glPopMatrix');
440     es_glTranslatef := SDL_GL_GetProcAddress('glTranslatef');
441     es_glRotatef := SDL_GL_GetProcAddress('glRotatef');
442     es_glScalef := SDL_GL_GetProcAddress('glScalef');
444     es_glReadPixels := SDL_GL_GetProcAddress('glReadPixels');
446     es_glViewport := SDL_GL_GetProcAddress('glViewport');
447     es_glScissor := SDL_GL_GetProcAddress('glScissor');
448     es_glStencilMask := SDL_GL_GetProcAddress('glStencilMask');
449     es_glStencilFunc := SDL_GL_GetProcAddress('glStencilFunc');
450     es_glStencilOp := SDL_GL_GetProcAddress('glStencilOp');
451     es_glColorMask := SDL_GL_GetProcAddress('glColorMask');
453     es_glBindTexture := SDL_GL_GetProcAddress('glBindTexture');
454     es_glGenTextures := SDL_GL_GetProcAddress('glGenTextures');
455     es_glTexEnvi := SDL_GL_GetProcAddress('glTexEnvi');
456     es_glTexParameterf := SDL_GL_GetProcAddress('glTexParameterf');
457     es_glTexParameteri := SDL_GL_GetProcAddress('glTexParameteri');
458     es_glTexImage2D := SDL_GL_GetProcAddress('glTexImage2D');
459     es_glTexSubImage2D := SDL_GL_GetProcAddress('glTexSubImage2D');
460     es_glDeleteTextures := SDL_GL_GetProcAddress('glDeleteTextures');
462     cmds.mode := GL_INVALID_ENUM
463   end;
465   procedure nogl_Quit;
466   begin
467     es_glVertexPointer := nil;
468     es_glColorPointer := nil;
469     es_glTexCoordPointer := nil;
470     es_glEnableClientState := nil;
471     es_glDisableClientState := nil;
472     es_glDrawArrays := nil;
473     es_glActiveTexture := nil;
474     es_glClientActiveTexture := nil;
475     es_glColor4f := nil;
477     es_glEnable := nil;
478     es_glDisable := nil;
479     es_glIsEnabled := nil;
480     es_glGetString := nil;
481     es_glClearColor := nil;
482     es_glClear := nil;
483     es_glAlphaFunc := nil;
484     es_glBlendFunc := nil;
485     es_glPointSize := nil;
486     es_glLineWidth := nil;
487     es_glGetIntegerv := nil;
488     es_glFlush := nil;
489     es_glFinish := nil;
491     es_glLoadIdentity := nil;
492     es_glMatrixMode := nil;
493     es_glLoadMatrixf := nil;
494     es_glPushMatrix := nil;
495     es_glPopMatrix := nil;
496     es_glTranslatef := nil;
497     es_glRotatef := nil;
498     es_glScalef := nil;
500     es_glReadPixels := nil;
502     es_glViewport := nil;
503     es_glScissor := nil;
504     es_glStencilMask := nil;
505     es_glStencilFunc := nil;
506     es_glStencilOp := nil;
507     es_glColorMask := nil;
509     es_glBindTexture := nil;
510     es_glGenTextures := nil;
511     es_glTexEnvi := nil;
512     es_glTexParameterf := nil;
513     es_glTexParameteri := nil;
514     es_glTexImage2D := nil;
515     es_glTexSubImage2D := nil;
516     es_glDeleteTextures := nil;
517   end;
519 initialization