DEADSOFTWARE

nogl: fix quads
[d2df-sdl.git] / src / nogl / noGLES1.inc
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 extList: string = '';
34 var
35 es_glVertexPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
36 es_glColorPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
37 es_glTexCoordPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
38 es_glEnableClientState: procedure (arr: GLenum); cdecl;
39 es_glDisableClientState: procedure (arr: GLenum); cdecl;
40 es_glDrawArrays: procedure (mode: GLenum; first: GLint; count: GLsizei); cdecl;
41 // es_glActiveTexture: procedure(texture: GLenum); cdecl;
42 // es_glClientActiveTexture: procedure(texture: GLenum); cdecl;
43 es_glColor4f: procedure(red, green, blue, alpha: GLfloat); cdecl;
45 es_glEnable: procedure (cap: GLenum); cdecl;
46 es_glDisable: procedure (cap: GLenum); cdecl;
47 es_glIsEnabled: function (cap: GLenum): GLBoolean; cdecl;
48 es_glGetString: function (name: GLenum): PChar; cdecl;
49 es_glGetError: function (): GLenum; cdecl;
50 es_glClearColor: procedure (red, green, blue, alpha: GLclampf); cdecl;
51 es_glClear: procedure (mask: GLbitfield); cdecl;
52 es_glAlphaFunc: procedure (func: GLenum; ref: GLclampf); cdecl;
53 es_glBlendFunc: procedure (sfactor, dfactor: GLenum); cdecl;
54 es_glPointSize: procedure (size: GLfloat); cdecl;
55 es_glLineWidth: procedure (width: GLfloat); cdecl;
56 es_glGetIntegerv: procedure (pname: GLenum; params: PGLint); cdecl;
57 es_glFlush: procedure; cdecl;
58 es_glFinish: procedure; cdecl;
60 es_glMultMatrixf: procedure (m: PGLfloat); cdecl;
61 es_glOrthof: procedure (left, right, bottom, top, near, far: GLfloat); cdecl;
62 es_glLoadIdentity: procedure; cdecl;
63 es_glMatrixMode: procedure (mode: GLenum); cdecl;
64 es_glLoadMatrixf: procedure (m: PGLfloat); cdecl;
65 es_glPushMatrix: procedure; cdecl;
66 es_glPopMatrix: procedure; cdecl;
67 es_glTranslatef: procedure (x, y, z: GLfloat); cdecl;
68 es_glRotatef: procedure (angle, x, y, z: GLfloat); cdecl;
69 es_glScalef: procedure (x, y, z: GLfloat); cdecl;
71 es_glReadPixels: procedure (x, y: GLint; width, height: GLsizei; format,_type: GLenum; pixels: PGLvoid); cdecl;
73 es_glViewport: procedure (x, y: GLint; width, height: GLsizei); cdecl;
74 es_glScissor: procedure (x, y: GLint; width, height: GLsizei); cdecl;
75 es_glStencilMask: procedure (mask: GLuint); cdecl;
76 es_glStencilFunc: procedure (func: GLenum; ref: GLint; mask: GLuint); cdecl;
77 es_glStencilOp: procedure (fail, zfail, zpass: GLenum); cdecl;
78 es_glColorMask: procedure (red: GLboolean; green: GLboolean; blue: GLboolean; alpha: GLboolean); cdecl;
80 es_glBindTexture: procedure (target: GLenum; texture: GLuint); cdecl;
81 es_glGenTextures: procedure (n: GLsizei; textures: PGLuint); cdecl;
82 es_glTexEnvi: procedure (target: GLenum; pname: GLenum; param: GLint); cdecl;
83 es_glTexParameterf: procedure (target: GLenum; pname: GLenum; param: GLfloat); cdecl;
84 es_glTexParameteri: procedure (target: GLenum; pname: GLenum; param: GLint); cdecl;
85 es_glTexImage2D: procedure (target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, _type:GLenum; pixels: PGLvoid); cdecl;
86 es_glTexSubImage2D: procedure (target: GLenum; level: GLint; xoffset, yoffset: GLint; width, height: GLsizei; format, _type: GLenum; pixels: PGLvoid); cdecl;
87 es_glDeleteTextures: procedure (n: GLsizei; textures: PGLuint); cdecl;
89 es_glGenFramebuffers: procedure (n: GLsizei; framebuffers: PGLuint); cdecl;
90 es_glBindFramebuffer: procedure (target: GLenum; framebuffer: GLuint); cdecl;
91 es_glFramebufferTexture2D: procedure (target, attachment, textarget: GLenum; texture: GLuint; level: GLint); cdecl;
92 es_glFramebufferRenderbuffer: procedure (target, attachment, rbotarget: GLenum; rbo: GLuint); cdecl;
93 es_glCheckFramebufferStatus: function (framebuffer: GLuint): GLenum; cdecl;
94 es_glDeleteFramebuffers: procedure (n: GLsizei; const framebuffers: PGLuint); cdecl;
96 es_glGenRenderbuffers: procedure (n: GLsizei; framebuffers: PGLuint); cdecl;
97 es_glBindRenderbuffer: procedure (target: GLenum; renderbuffer: GLuint); cdecl;
98 es_glRenderbufferStorage: procedure (target, internalformat: GLenum; w, h: GLsizei); cdecl;
99 es_glDeleteRenderbuffers: procedure (n: GLsizei; const renderbuffers: PGLuint); cdecl;
101 procedure glEnable(cap: GLenum);
102 begin
103 es_glEnable(cap);
104 end;
106 procedure glDisable(cap: GLenum);
107 begin
108 es_glDisable(cap);
109 end;
111 function glIsEnabled(cap: GLenum): GLboolean;
112 begin
113 result := es_glIsEnabled(cap);
114 end;
116 function glGetString(name: GLenum): PChar;
117 begin
118 result := es_glGetString(name);
119 end;
121 function glGetError: GLenum;
122 begin
123 result := es_glGetError
124 end;
126 procedure glClearColor(red, green, blue, alpha: GLclampf);
127 begin
128 es_glClearColor(red, green, blue, alpha);
129 end;
131 procedure glClear(mask: GLbitfield);
132 begin
133 es_glClear(mask);
134 end;
136 procedure glAlphaFunc(func: GLenum; ref: GLclampf);
137 begin
138 es_glAlphaFunc(func, ref);
139 end;
141 procedure glBlendFunc(sfactor, dfactor: GLenum);
142 begin
143 es_glBlendFunc(sfactor, dfactor);
144 end;
146 procedure glPointSize(size: GLfloat);
147 begin
148 es_glPointSize(size);
149 end;
151 procedure glLineWidth(width: GLfloat);
152 begin
153 es_glLineWidth(width);
154 end;
156 procedure glGetIntegerv(pname: GLenum; params: PGLint);
157 begin
158 es_glGetIntegerv(pname, params);
159 end;
161 procedure glFlush;
162 begin
163 es_glFlush;
164 end;
166 procedure glFinish;
167 begin
168 es_glFinish;
169 end;
175 procedure glBegin(mode: GLenum);
176 begin
177 assert(cmds.mode = GL_INVALID_ENUM);
178 assert((mode = GL_POINTS) or (mode = GL_LINES) or (mode = GL_QUADS) or (mode = GL_LINE_LOOP));
179 cmds.mode := mode;
180 SetLength(cmds.v, 0);
181 SetLength(cmds.c, 0);
182 SetLength(cmds.t, 0);
183 end;
185 procedure glEnd;
186 begin
187 assert(cmds.mode <> GL_INVALID_ENUM);
188 assert(Length(cmds.v) mod ValPerVertex = 0);
189 assert(Length(cmds.c) mod ValPerColor = 0);
190 assert(Length(cmds.t) mod ValPerCoord = 0);
191 if Length(cmds.c) <> 0 then
192 assert(Length(cmds.v) div ValPerVertex = Length(cmds.c) div ValPerColor);
193 if Length(cmds.t) <> 0 then
194 assert(Length(cmds.v) div ValPerVertex = Length(cmds.t) div ValPerCoord);
196 es_glVertexPointer(ValPerVertex, GL_FLOAT, 0, @cmds.v[0]);
197 es_glColorPointer(ValPerColor, GL_FLOAT, 0, @cmds.c[0]);
198 es_glTexCoordPointer(ValPerCoord, GL_FLOAT, 0, @cmds.t[0]);
199 es_glEnableClientState(GL_VERTEX_ARRAY);
200 es_glEnableClientState(GL_COLOR_ARRAY);
201 es_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
202 es_glDisableClientState(GL_NORMAL_ARRAY);
204 if Length(cmds.c) = 0 then
205 es_glDisableClientState(GL_COLOR_ARRAY);
206 if Length(cmds.t) = 0 then
207 es_glDisableClientState(GL_TEXTURE_COORD_ARRAY);
209 if cmds.mode = GL_QUADS then
210 es_glDrawArrays(GL_TRIANGLES, 0, Length(cmds.v) div ValPerVertex)
211 else
212 es_glDrawArrays(cmds.mode, 0, Length(cmds.v) div ValPerVertex);
214 SetLength(cmds.v, 0);
215 SetLength(cmds.c, 0);
216 SetLength(cmds.t, 0);
217 cmds.mode := GL_INVALID_ENUM;
218 end;
220 (* ---------- begin internals ---------- *)
222 procedure AddFloatRaw (var x: TArrayFloat; f: GLfloat);
223 var i: Integer;
224 begin
225 i := Length(x);
226 SetLength(x, i + 1);
227 x[i] := f;
228 end;
230 procedure AddFloatX (var x: TArrayFloat; v: array of GLfloat); inline;
231 var i, j, vpx: Integer;
232 begin
233 i := Length(x);
234 vpx := Length(v);
235 if (cmds.mode = GL_QUADS) and (i div vpx mod 6 = 3) then
236 begin
237 for j := 0 to vpx - 1 do AddFloatRaw(x, x[i - 1*vpx + j]);
238 for j := 0 to vpx - 1 do AddFloatRaw(x, v[j]);
239 for j := 0 to vpx - 1 do AddFloatRaw(x, x[i - 3*vpx + j]);
240 end
241 else
242 begin
243 for j := 0 to vpx - 1 do AddFloatRaw(x, v[j]);
244 end;
245 end;
247 (* ---------- end internals ---------- *)
249 procedure glVertex2f(x, y: GLfloat);
250 begin
251 AddFloatX(cmds.v, [x, y]);
252 end;
254 procedure glVertex2i(x, y: GLint);
255 begin
256 AddFloatX(cmds.v, [x, y]);
257 end;
259 procedure glColor4f(red, green, blue, alpha: GLfloat);
260 begin
261 if cmds.mode = GL_INVALID_ENUM then
262 es_glColor4f(red, green, blue, alpha)
263 else
264 AddFloatX(cmds.c, [red, green, blue, alpha])
265 end;
267 procedure glColor4ub(red, green, blue, alpha: GLubyte);
268 begin
269 glColor4f(red / 255, green / 255, blue / 255, alpha / 255)
270 end;
272 procedure glColor3ub(red, green, blue: GLubyte);
273 begin
274 glColor4f(red / 255, green / 255, blue / 255, 255)
275 end;
277 procedure glTexCoord2f(s, t: GLfloat);
278 begin
279 AddFloatX(cmds.t, [s, t]);
280 end;
282 procedure glTexCoord2i(s, t: GLint);
283 begin
284 AddFloatX(cmds.t, [s, t]);
285 end;
293 procedure glReadPixels(x, y: GLint; width, height: GLsizei; format, atype: GLenum; pixels: Pointer);
294 begin
295 es_glReadPixels(x, y, width, height, format, atype, pixels);
296 end;
302 procedure glOrtho (left, right, bottom, top, near, far: GLdouble);
303 var m: array [0..15] of GLfloat;
304 begin
305 if assigned(es_glOrthof) then
306 begin
307 es_glOrthof(left, right, bottom, top, near, far);
308 end
309 else
310 begin
311 m[0] := 2 / (right - left);
312 m[1] := 0;
313 m[2] := 0;
314 m[3] := 0;
315 m[4] := 0;
316 m[5] := 2 / (top - bottom);
317 m[6] := 0;
318 m[7] := 0;
319 m[8] := 0;
320 m[9] := 0;
321 m[10] := -2 / (far - near);
322 m[11] := 0;
323 m[12] := -((right + left) / (right - left));
324 m[13] := -((top + bottom) / (top - bottom));
325 m[14] := -((far + near) / (far - near));
326 m[15] := 1;
327 es_glMultMatrixf(@m[0]);
328 end;
329 end;
331 procedure glLoadIdentity;
332 begin
333 es_glLoadIdentity;
334 end;
336 procedure glMatrixMode(mode: GLenum);
337 begin
338 es_glMatrixMode(mode);
339 end;
341 procedure glLoadMatrixd(const m: PGLdouble);
342 var
343 i: Integer;
344 n: array [0..15] of GLfloat;
345 begin
346 for i := 0 to 15 do
347 n[i] := m[i];
348 es_glLoadMatrixf(@n[0]);
349 end;
351 procedure glPushMatrix;
352 begin
353 es_glPushMatrix;
354 end;
356 procedure glPopMatrix;
357 begin
358 es_glPopMatrix;
359 end;
361 procedure glTranslatef(x, y, z: GLfloat);
362 begin
363 es_glTranslatef(x, y, z);
364 end;
366 procedure glRotatef(angle, x, y, z: GLfloat);
367 begin
368 es_glRotatef(angle, x, y, z);
369 end;
371 procedure glScalef(x, y, z: GLfloat);
372 begin
373 es_glScalef(x, y, z);
374 end;
381 procedure glViewport(x, y: GLint; width, height: GLsizei);
382 begin
383 es_glViewport(x, y, width, height);
384 end;
386 procedure glScissor(x, y: GLint; width, height: GLsizei);
387 begin
388 es_glScissor(x, y, width, height);
389 end;
391 procedure glStencilMask(mask: GLuint);
392 begin
393 es_glStencilMask(mask);
394 end;
396 procedure glStencilFunc(func: GLenum; ref: GLint; mask: GLuint);
397 begin
398 es_glStencilFunc(func, ref, mask);
399 end;
401 procedure glStencilOp(fail, zfail, zpass: GLenum);
402 begin
403 es_glStencilOp(fail, zfail, zpass);
404 end;
406 procedure glColorMask(red, green, blue, alpha: GLboolean);
407 begin
408 es_glColorMask(red, green, blue, alpha);
409 end;
416 procedure glBindTexture(target: GLenum; texture: GLuint);
417 begin
418 es_glBindTexture(target, texture);
419 end;
421 procedure glGenTextures(n: GLsizei; textures: PGLuint);
422 begin
423 es_glGenTextures(n, textures);
424 end;
426 procedure glTexEnvi(target: GLenum; pname: GLenum; param: GLint);
427 begin
428 es_glTexEnvi(target, pname, param);
429 end;
431 procedure glTexParameterf(target: GLenum; pname: GLenum; param: GLfloat);
432 begin
433 es_glTexParameterf(target, pname, param);
434 end;
436 procedure glTexParameteri(target: GLenum; pname: GLenum; param: GLint);
437 begin
438 es_glTexParameteri(target, pname, param);
439 end;
441 procedure glTexImage2D(target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, atype: GLenum; const pixels: Pointer);
442 begin
443 es_glTexImage2D(target, level, internalformat, width, height, border, format, atype, pixels);
444 end;
446 procedure glTexSubImage2D(target: GLenum; level, xoffset, yoffset: GLint; width, height: GLsizei; format, atype: GLenum; const pixels: Pointer);
447 begin
448 es_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, atype, pixels);
449 end;
451 procedure glDeleteTextures(n: GLsizei; const textures: PGLuint);
452 begin
453 es_glDeleteTextures(n, textures);
454 end;
461 procedure glGenFramebuffers(n: GLsizei; framebuffers: PGLuint);
462 begin
463 es_glGenFramebuffers(n, framebuffers);
464 end;
466 procedure glBindFramebuffer(target: GLenum; framebuffer: GLuint);
467 begin
468 es_glBindFramebuffer(target, framebuffer);
469 end;
471 procedure glFramebufferTexture2D(target, attachment, textarget: GLenum; texture: GLuint; level: GLint);
472 begin
473 es_glFramebufferTexture2D(target, attachment, textarget, texture, level);
474 end;
476 procedure glFramebufferRenderbuffer(target, attachment, rbotarget: GLenum; rbo: GLuint);
477 begin
478 es_glFramebufferRenderbuffer(target, attachment, rbotarget, rbo);
479 end;
481 function glCheckFramebufferStatus(framebuffer: GLuint): GLenum;
482 begin
483 result := es_glCheckFramebufferStatus(framebuffer);
484 end;
486 procedure glDeleteFramebuffers(n: GLsizei; const framebuffers: PGLuint);
487 begin
488 es_glDeleteFramebuffers(n, framebuffers);
489 end;
491 procedure glGenRenderbuffers(n: GLsizei; renderbuffers: PGLuint);
492 begin
493 es_glGenRenderbuffers(n, renderbuffers);
494 end;
496 procedure glBindRenderbuffer(target: GLenum; renderbuffer: GLuint);
497 begin
498 es_glBindRenderbuffer(target, renderbuffer);
499 end;
501 procedure glRenderbufferStorage(target, internalformat: GLenum; w, h: GLsizei);
502 begin
503 es_glRenderbufferStorage(target, internalformat, w, h);
504 end;
506 procedure glDeleteRenderbuffers(n: GLsizei; const renderbuffers: PGLuint);
507 begin
508 es_glDeleteRenderbuffers(n, renderbuffers);
509 end;
516 procedure nogl_Init;
517 begin
518 es_glVertexPointer := SDL_GL_GetProcAddress('glVertexPointer');
519 es_glColorPointer := SDL_GL_GetProcAddress('glColorPointer');
520 es_glTexCoordPointer := SDL_GL_GetProcAddress('glTexCoordPointer');
521 es_glEnableClientState := SDL_GL_GetProcAddress('glEnableClientState');
522 es_glDisableClientState := SDL_GL_GetProcAddress('glDisableClientState');
523 es_glDrawArrays := SDL_GL_GetProcAddress('glDrawArrays');
524 // es_glActiveTexture := SDL_GL_GetProcAddress('glActiveTexture');
525 // es_glClientActiveTexture := SDL_GL_GetProcAddress('glClientActiveTexture');
526 es_glColor4f := SDL_GL_GetProcAddress('glColor4f');
528 es_glEnable := SDL_GL_GetProcAddress('glEnable');
529 es_glDisable := SDL_GL_GetProcAddress('glDisable');
530 es_glIsEnabled := SDL_GL_GetProcAddress('glIsEnabled');
531 es_glGetString := SDL_GL_GetProcAddress('glGetString');
532 es_glGetError := SDL_GL_GetProcAddress('glGetError');
533 es_glClearColor := SDL_GL_GetProcAddress('glClearColor');
534 es_glClear := SDL_GL_GetProcAddress('glClear');
535 es_glAlphaFunc := SDL_GL_GetProcAddress('glAlphaFunc');
536 es_glBlendFunc := SDL_GL_GetProcAddress('glBlendFunc');
537 es_glPointSize := SDL_GL_GetProcAddress('glPointSize');
538 es_glLineWidth := SDL_GL_GetProcAddress('glLineWidth');
539 es_glGetIntegerv := SDL_GL_GetProcAddress('glGetIntegerv');
540 es_glFlush := SDL_GL_GetProcAddress('glFlush');
541 es_glFinish := SDL_GL_GetProcAddress('glFinish');
543 es_glMultMatrixf := SDL_GL_GetProcAddress('glMultMatrixf');
544 es_glOrthof := SDL_GL_GetProcAddress('glOrthof');
545 es_glLoadIdentity := SDL_GL_GetProcAddress('glLoadIdentity');
546 es_glMatrixMode := SDL_GL_GetProcAddress('glMatrixMode');
547 es_glLoadMatrixf := SDL_GL_GetProcAddress('glLoadMatrixf');
548 es_glPushMatrix := SDL_GL_GetProcAddress('glPushMatrix');
549 es_glPopMatrix := SDL_GL_GetProcAddress('glPopMatrix');
550 es_glTranslatef := SDL_GL_GetProcAddress('glTranslatef');
551 es_glRotatef := SDL_GL_GetProcAddress('glRotatef');
552 es_glScalef := SDL_GL_GetProcAddress('glScalef');
554 es_glReadPixels := SDL_GL_GetProcAddress('glReadPixels');
556 es_glViewport := SDL_GL_GetProcAddress('glViewport');
557 es_glScissor := SDL_GL_GetProcAddress('glScissor');
558 es_glStencilMask := SDL_GL_GetProcAddress('glStencilMask');
559 es_glStencilFunc := SDL_GL_GetProcAddress('glStencilFunc');
560 es_glStencilOp := SDL_GL_GetProcAddress('glStencilOp');
561 es_glColorMask := SDL_GL_GetProcAddress('glColorMask');
563 es_glBindTexture := SDL_GL_GetProcAddress('glBindTexture');
564 es_glGenTextures := SDL_GL_GetProcAddress('glGenTextures');
565 es_glTexEnvi := SDL_GL_GetProcAddress('glTexEnvi');
566 es_glTexParameterf := SDL_GL_GetProcAddress('glTexParameterf');
567 es_glTexParameteri := SDL_GL_GetProcAddress('glTexParameteri');
568 es_glTexImage2D := SDL_GL_GetProcAddress('glTexImage2D');
569 es_glTexSubImage2D := SDL_GL_GetProcAddress('glTexSubImage2D');
570 es_glDeleteTextures := SDL_GL_GetProcAddress('glDeleteTextures');
572 es_glGenFramebuffers := SDL_GL_GetProcAddress('glGenFramebuffersOES');
573 es_glBindFramebuffer := SDL_GL_GetProcAddress('glBindFramebufferOES');
574 es_glFramebufferTexture2D := SDL_GL_GetProcAddress('glFramebufferTexture2DOES');;
575 es_glFramebufferRenderbuffer := SDL_GL_GetProcAddress('glFramebufferRenderbufferOES');
576 es_glCheckFramebufferStatus := SDL_GL_GetProcAddress('glCheckFramebufferStatusOES');
577 es_glDeleteFramebuffers := SDL_GL_GetProcAddress('glDeleteFramebuffersOES');
579 es_glGenRenderbuffers := SDL_GL_GetProcAddress('glGenRenderbuffersOES');
580 es_glBindRenderbuffer := SDL_GL_GetProcAddress('glBindRenderbufferOES');
581 es_glRenderbufferStorage := SDL_GL_GetProcAddress('glRenderbufferStorageOES');
582 es_glDeleteRenderbuffers := SDL_GL_GetProcAddress('glDeleteRenderbuffersOES');
584 cmds.mode := GL_INVALID_ENUM
585 end;
587 procedure nogl_Quit;
588 begin
589 es_glVertexPointer := nil;
590 es_glColorPointer := nil;
591 es_glTexCoordPointer := nil;
592 es_glEnableClientState := nil;
593 es_glDisableClientState := nil;
594 es_glDrawArrays := nil;
595 // es_glActiveTexture := nil;
596 // es_glClientActiveTexture := nil;
597 es_glColor4f := nil;
599 es_glEnable := nil;
600 es_glDisable := nil;
601 es_glIsEnabled := nil;
602 es_glGetString := nil;
603 es_glClearColor := nil;
604 es_glClear := nil;
605 es_glAlphaFunc := nil;
606 es_glBlendFunc := nil;
607 es_glPointSize := nil;
608 es_glLineWidth := nil;
609 es_glGetIntegerv := nil;
610 es_glFlush := nil;
611 es_glFinish := nil;
613 es_glMultMatrixf := nil;
614 es_glOrthof := nil;
615 es_glLoadIdentity := nil;
616 es_glMatrixMode := nil;
617 es_glLoadMatrixf := nil;
618 es_glPushMatrix := nil;
619 es_glPopMatrix := nil;
620 es_glTranslatef := nil;
621 es_glRotatef := nil;
622 es_glScalef := nil;
624 es_glReadPixels := nil;
626 es_glViewport := nil;
627 es_glScissor := nil;
628 es_glStencilMask := nil;
629 es_glStencilFunc := nil;
630 es_glStencilOp := nil;
631 es_glColorMask := nil;
633 es_glBindTexture := nil;
634 es_glGenTextures := nil;
635 es_glTexEnvi := nil;
636 es_glTexParameterf := nil;
637 es_glTexParameteri := nil;
638 es_glTexImage2D := nil;
639 es_glTexSubImage2D := nil;
640 es_glDeleteTextures := nil;
642 es_glGenFramebuffers := nil;
643 es_glBindFramebuffer := nil;
644 es_glFramebufferTexture2D := nil;
645 es_glFramebufferRenderbuffer := nil;
646 es_glCheckFramebufferStatus := nil;
647 es_glDeleteFramebuffers := nil;
649 es_glGenRenderbuffers := nil;
650 es_glBindRenderbuffer := nil;
651 es_glRenderbufferStorage := nil;
652 es_glDeleteRenderbuffers := nil;
653 end;
655 function nogl_ExtensionSupported(ext: string): Boolean;
656 begin
657 if (extList = '') and Assigned(es_glGetString) then
658 extList := glGetString(GL_EXTENSIONS);
659 result := pos(ext, extList) <> 0;
660 end;
662 initialization