opengl 0.7.0.pre1-x86-mingw32 → 0.7.0.pre2-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/.autotest +29 -0
  2. data/.gitignore +5 -8
  3. data/History.rdoc +33 -0
  4. data/Manifest.txt +72 -57
  5. data/README.rdoc +72 -25
  6. data/Rakefile +60 -72
  7. data/Rakefile.cross +5 -2
  8. data/{doc → docs}/build_install.txt +0 -0
  9. data/{doc → docs}/extensions.txt.in +0 -0
  10. data/{doc → docs}/history.txt +0 -0
  11. data/{doc → docs}/requirements_and_design.txt +0 -0
  12. data/{doc → docs}/roadmap.txt +0 -0
  13. data/{doc → docs}/scientific_use.txt +0 -0
  14. data/{doc → docs}/supplies/page_template.html +0 -0
  15. data/{doc → docs}/thanks.txt +0 -0
  16. data/{doc → docs}/tutorial.txt +0 -0
  17. data/examples/NeHe/NeHe.png +0 -0
  18. data/examples/NeHe/crate.png +0 -0
  19. data/examples/NeHe/glass.png +0 -0
  20. data/examples/NeHe/nehe_lesson02.rb +82 -83
  21. data/examples/NeHe/nehe_lesson03.rb +88 -88
  22. data/examples/NeHe/nehe_lesson04.rb +93 -96
  23. data/examples/NeHe/nehe_lesson05.rb +137 -144
  24. data/examples/NeHe/nehe_lesson06.rb +183 -0
  25. data/examples/NeHe/nehe_lesson07.rb +237 -0
  26. data/examples/NeHe/nehe_lesson08.rb +252 -0
  27. data/examples/NeHe/nehe_lesson09.rb +199 -0
  28. data/examples/NeHe/nehe_lesson11.rb +173 -0
  29. data/examples/NeHe/nehe_lesson12.rb +200 -0
  30. data/examples/NeHe/nehe_lesson16.rb +208 -0
  31. data/examples/NeHe/nehe_lesson19.rb +206 -0
  32. data/examples/NeHe/particle.png +0 -0
  33. data/examples/NeHe/star.png +0 -0
  34. data/examples/NeHe/tim.png +0 -0
  35. data/examples/RedBook/light.rb +154 -0
  36. data/examples/misc/OGLBench.rb +2 -2
  37. data/examples/misc/trislam.rb +2 -2
  38. data/ext/{common → opengl}/common.h +2 -11
  39. data/ext/{common → opengl}/conv.h +43 -31
  40. data/ext/{glut → opengl}/extconf.rb +14 -7
  41. data/ext/{common → opengl}/funcdef.h +155 -125
  42. data/ext/{gl → opengl}/gl-1.0-1.1.c +426 -162
  43. data/ext/{gl → opengl}/gl-1.2.c +70 -66
  44. data/ext/{gl → opengl}/gl-1.3.c +19 -19
  45. data/ext/{gl → opengl}/gl-1.4.c +23 -23
  46. data/ext/{gl → opengl}/gl-1.5.c +46 -47
  47. data/ext/{gl → opengl}/gl-2.0.c +66 -60
  48. data/ext/{gl → opengl}/gl-2.1.c +4 -4
  49. data/ext/{gl → opengl}/gl-enums.c +2 -1
  50. data/ext/{common → opengl}/gl-enums.h +0 -0
  51. data/ext/{gl → opengl}/gl-error.c +12 -4
  52. data/ext/{common → opengl}/gl-error.h +7 -2
  53. data/ext/{gl → opengl}/gl-ext-3dfx.c +1 -1
  54. data/ext/{gl → opengl}/gl-ext-arb.c +75 -70
  55. data/ext/{gl → opengl}/gl-ext-ati.c +3 -3
  56. data/ext/{gl → opengl}/gl-ext-ext.c +54 -54
  57. data/ext/{gl → opengl}/gl-ext-gremedy.c +3 -3
  58. data/ext/{gl → opengl}/gl-ext-nv.c +49 -48
  59. data/ext/{common → opengl}/gl-types.h +0 -0
  60. data/ext/{gl → opengl}/gl.c +8 -10
  61. data/ext/{glu → opengl}/glu-enums.c +1 -1
  62. data/ext/{common → opengl}/glu-enums.h +0 -0
  63. data/ext/{glu → opengl}/glu.c +7 -3
  64. data/ext/{glut → opengl}/glut.c +98 -48
  65. data/ext/opengl/opengl.c +11 -0
  66. data/lib/gl.rb +1 -0
  67. data/lib/glu.rb +1 -0
  68. data/lib/glut.rb +1 -0
  69. data/lib/opengl.rb +13 -14
  70. data/lib/opengl/opengl.so +0 -0
  71. data/lib/opengl/test_case.rb +87 -0
  72. data/test/{tc_misc.rb → test_gl.rb} +2 -14
  73. data/test/test_gl_10_11.rb +1363 -0
  74. data/test/test_gl_12.rb +182 -0
  75. data/test/{tc_func_13.rb → test_gl_13.rb} +14 -14
  76. data/test/test_gl_14.rb +221 -0
  77. data/test/test_gl_15.rb +260 -0
  78. data/test/test_gl_20.rb +430 -0
  79. data/test/test_gl_21.rb +553 -0
  80. data/test/test_gl_ext_arb.rb +526 -0
  81. data/test/{tc_ext_ati.rb → test_gl_ext_ati.rb} +11 -14
  82. data/test/test_gl_ext_ext.rb +608 -0
  83. data/test/{tc_ext_gremedy.rb → test_gl_ext_gremedy.rb} +6 -6
  84. data/test/test_gl_ext_nv.rb +352 -0
  85. data/test/test_glu.rb +309 -0
  86. metadata +159 -102
  87. data/History.txt +0 -36
  88. data/ext/gl/extconf.rb +0 -43
  89. data/ext/glu/extconf.rb +0 -51
  90. data/test/README +0 -10
  91. data/test/tc_common.rb +0 -98
  92. data/test/tc_ext_arb.rb +0 -467
  93. data/test/tc_ext_ext.rb +0 -551
  94. data/test/tc_ext_nv.rb +0 -357
  95. data/test/tc_func_10_11.rb +0 -1281
  96. data/test/tc_func_12.rb +0 -186
  97. data/test/tc_func_14.rb +0 -197
  98. data/test/tc_func_15.rb +0 -270
  99. data/test/tc_func_20.rb +0 -346
  100. data/test/tc_func_21.rb +0 -541
  101. data/test/tc_glu.rb +0 -310
  102. data/test/tc_include_gl.rb +0 -35
  103. data/test/tc_require_gl.rb +0 -34
@@ -15,7 +15,7 @@
15
15
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
16
  */
17
17
 
18
- #include "../common/common.h"
18
+ #include "common.h"
19
19
 
20
20
  #ifndef MAX
21
21
  #define MAX(a, b) (((a) > (b)) ? (a) : (b))
@@ -63,14 +63,9 @@ GL_FUNC_STATIC_2(DeleteLists,GLvoid, GLuint,GLuint)
63
63
  GL_FUNC_STATIC_1(DepthFunc,GLvoid, GLenum)
64
64
  GL_FUNC_STATIC_1(DepthMask,GLvoid, GLboolean)
65
65
  GL_FUNC_STATIC_2(DepthRange,GLvoid, GLclampd,GLclampd)
66
- GL_FUNC_STATIC_1(Disable,GLvoid, GLenum)
67
- GL_FUNC_STATIC_1(DisableClientState,GLvoid, GLenum)
68
66
  GL_FUNC_STATIC_3(DrawArrays,GLvoid, GLenum,GLint,GLsizei)
69
67
  GL_FUNC_STATIC_1(DrawBuffer,GLvoid, GLenum)
70
68
  GL_FUNC_STATIC_1(EdgeFlag,GLvoid, GLboolean)
71
- GL_FUNC_STATIC_1(Enable,GLvoid, GLenum)
72
- GL_FUNC_STATIC_1(EnableClientState,GLvoid, GLenum)
73
- GL_FUNC_STATIC_0(EndList,GLvoid)
74
69
  GL_FUNC_STATIC_1(EvalCoord1d,GLvoid, GLdouble)
75
70
  GL_FUNC_STATIC_1(EvalCoord1f,GLvoid, GLfloat)
76
71
  GL_FUNC_STATIC_2(EvalCoord2d,GLvoid, GLdouble,GLdouble)
@@ -115,7 +110,6 @@ GL_FUNC_STATIC_6(MapGrid2f,GLvoid, GLint,GLfloat,GLfloat,GLint,GLfloat,GLfloat)
115
110
  GL_FUNC_STATIC_3(Materialf,GLvoid, GLenum,GLenum,GLfloat)
116
111
  GL_FUNC_STATIC_3(Materiali,GLvoid, GLenum,GLenum,GLint)
117
112
  GL_FUNC_STATIC_1(MatrixMode,GLvoid, GLenum)
118
- GL_FUNC_STATIC_2(NewList,GLvoid, GLuint,GLenum)
119
113
  GL_FUNC_STATIC_3(Normal3b,GLvoid, GLbyte,GLbyte,GLbyte)
120
114
  GL_FUNC_STATIC_3(Normal3d,GLvoid, GLdouble,GLdouble,GLdouble)
121
115
  GL_FUNC_STATIC_3(Normal3f,GLvoid, GLfloat,GLfloat,GLfloat)
@@ -133,11 +127,9 @@ GL_FUNC_STATIC_2(PolygonMode,GLvoid, GLenum,GLenum)
133
127
  GL_FUNC_STATIC_2(PolygonOffset,GLvoid, GLfloat,GLfloat)
134
128
  GL_FUNC_STATIC_0(PopAttrib,GLvoid)
135
129
  GL_FUNC_STATIC_0(PopClientAttrib,GLvoid)
136
- GL_FUNC_STATIC_0(PopMatrix,GLvoid)
137
130
  GL_FUNC_STATIC_0(PopName,GLvoid)
138
131
  GL_FUNC_STATIC_1(PushAttrib,GLvoid, GLbitfield)
139
132
  GL_FUNC_STATIC_1(PushClientAttrib,GLvoid, GLbitfield)
140
- GL_FUNC_STATIC_0(PushMatrix,GLvoid)
141
133
  GL_FUNC_STATIC_1(PushName,GLvoid, GLuint)
142
134
  GL_FUNC_STATIC_2(RasterPos2d,GLvoid, GLdouble,GLdouble)
143
135
  GL_FUNC_STATIC_2(RasterPos2f,GLvoid, GLfloat,GLfloat)
@@ -208,21 +200,300 @@ GL_FUNC_STATIC_4(Viewport,GLvoid, GLuint,GLuint,GLuint,GLuint)
208
200
  VALUE inside_begin_end = Qfalse;
209
201
 
210
202
  static VALUE
211
- gl_Begin(obj,arg1)
212
- VALUE obj,arg1;
203
+ gl_Enable1(VALUE caps)
213
204
  {
214
- glBegin(CONV_GLenum(arg1));
215
- inside_begin_end = Qtrue;
216
- return Qnil;
205
+ long i;
206
+
207
+ for (i = 0; i < RARRAY_LEN(caps); i++) {
208
+ glEnable(CONV_GLenum(rb_ary_entry(caps, i)));
209
+
210
+ CHECK_GLERROR_FROM("glEnable");
211
+ }
212
+
213
+ return Qnil;
217
214
  }
218
215
 
219
216
  static VALUE
220
- gl_End(obj)
221
- VALUE obj;
217
+ gl_Enable0(VALUE caps)
218
+ {
219
+ gl_Enable1(caps);
220
+
221
+ if (rb_block_given_p())
222
+ rb_yield(Qundef);
223
+
224
+ return Qnil;
225
+ }
226
+
227
+ static VALUE
228
+ gl_Disable1(VALUE caps)
229
+ {
230
+ long i;
231
+ for (i = 0; i < RARRAY_LEN(caps); i++) {
232
+ glDisable(CONV_GLenum(rb_ary_entry(caps, i)));
233
+
234
+ CHECK_GLERROR_FROM("glDisable");
235
+ }
236
+
237
+ return Qnil;
238
+ }
239
+
240
+ static VALUE
241
+ gl_Disable0(VALUE caps)
242
+ {
243
+ gl_Disable1(caps);
244
+
245
+ if (rb_block_given_p())
246
+ rb_yield(Qundef);
247
+
248
+ return Qnil;
249
+ }
250
+
251
+ static VALUE
252
+ gl_Enable(int argc, VALUE *argv, VALUE self)
253
+ {
254
+ int i;
255
+ VALUE caps, rev;
256
+
257
+ rb_scan_args(argc, argv, "1*", NULL, NULL);
258
+
259
+ caps = rb_ary_new2(argc);
260
+
261
+ for (i = 0; i < argc; i++)
262
+ rb_ary_push(caps, argv[i]);
263
+
264
+ rev = rb_ary_reverse(caps);
265
+
266
+ if (rb_block_given_p())
267
+ return rb_ensure(gl_Enable0, caps, gl_Disable1, rev);
268
+ else
269
+ gl_Enable0(caps);
270
+
271
+ return Qnil;
272
+ }
273
+
274
+ static VALUE
275
+ gl_Disable(int argc, VALUE *argv, VALUE self)
276
+ {
277
+ int i;
278
+ VALUE caps, rev;
279
+
280
+ rb_scan_args(argc, argv, "1*", NULL, NULL);
281
+
282
+ caps = rb_ary_new2(argc);
283
+
284
+ for (i = 0; i < argc; i++)
285
+ rb_ary_push(caps, argv[i]);
286
+
287
+ rev = rb_ary_reverse(caps);
288
+
289
+ if (rb_block_given_p())
290
+ return rb_ensure(gl_Disable0, caps, gl_Enable1, rev);
291
+ else
292
+ gl_Disable0(caps);
293
+
294
+ return Qnil;
295
+ }
296
+
297
+ static VALUE
298
+ gl_EnableClientState1(VALUE ary)
299
+ {
300
+ long i;
301
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
302
+ glEnableClientState(CONV_GLenum(rb_ary_entry(ary, i)));
303
+
304
+ CHECK_GLERROR_FROM("glEnableClientState");
305
+ }
306
+
307
+ return Qnil;
308
+ }
309
+
310
+ static VALUE
311
+ gl_EnableClientState0(VALUE ary)
312
+ {
313
+ gl_EnableClientState1(ary);
314
+
315
+ if (rb_block_given_p())
316
+ rb_yield(Qundef);
317
+
318
+ return Qnil;
319
+ }
320
+
321
+ static VALUE
322
+ gl_DisableClientState1(VALUE ary)
323
+ {
324
+ long i;
325
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
326
+ glDisableClientState(CONV_GLenum(rb_ary_entry(ary, i)));
327
+
328
+ CHECK_GLERROR_FROM("glDisableClientState");
329
+ }
330
+
331
+ return Qnil;
332
+ }
333
+
334
+ static VALUE
335
+ gl_DisableClientState0(VALUE ary)
336
+ {
337
+ gl_DisableClientState1(ary);
338
+
339
+ if (rb_block_given_p())
340
+ rb_yield(Qundef);
341
+
342
+ return Qnil;
343
+ }
344
+
345
+ static VALUE
346
+ gl_EnableClientState(int argc, VALUE *argv, VALUE self)
347
+ {
348
+ int i;
349
+ VALUE ary, rev;
350
+
351
+ rb_scan_args(argc, argv, "1*", NULL, NULL);
352
+
353
+ ary = rb_ary_new2(argc);
354
+
355
+ for (i = 0; i < argc; i++)
356
+ rb_ary_push(ary, argv[i]);
357
+
358
+ rev = rb_ary_reverse(ary);
359
+
360
+ if (rb_block_given_p())
361
+ return rb_ensure(gl_EnableClientState0, ary, gl_DisableClientState1, rev);
362
+ else
363
+ gl_EnableClientState0(ary);
364
+
365
+ return Qnil;
366
+ }
367
+
368
+ static VALUE
369
+ gl_DisableClientState(int argc, VALUE *argv, VALUE self)
370
+ {
371
+ int i;
372
+ VALUE ary, rev;
373
+
374
+ rb_scan_args(argc, argv, "1*", NULL, NULL);
375
+
376
+ ary = rb_ary_new2(argc);
377
+
378
+ for (i = 0; i < argc; i++)
379
+ rb_ary_push(ary, argv[i]);
380
+
381
+ rev = rb_ary_reverse(ary);
382
+
383
+ if (rb_block_given_p())
384
+ return rb_ensure(gl_DisableClientState0, ary, gl_EnableClientState1, rev);
385
+ else
386
+ gl_DisableClientState0(ary);
387
+
388
+ return Qnil;
389
+ }
390
+
391
+ static VALUE
392
+ gl_Begin0(GLenum mode)
393
+ {
394
+ glBegin(mode);
395
+
396
+ if (rb_block_given_p())
397
+ rb_yield(Qundef);
398
+
399
+ return Qnil;
400
+ }
401
+
402
+ static VALUE
403
+ gl_End(VALUE self)
222
404
  {
223
405
  inside_begin_end = Qfalse;
406
+
224
407
  glEnd();
225
- CHECK_GLERROR
408
+
409
+ CHECK_GLERROR_FROM("glEnd");
410
+
411
+ return Qnil;
412
+ }
413
+
414
+ static VALUE
415
+ gl_Begin(VALUE self, VALUE mode)
416
+ {
417
+ GLenum begin_mode = CONV_GLenum(mode);
418
+ inside_begin_end = Qtrue;
419
+
420
+ if (rb_block_given_p())
421
+ return rb_ensure(gl_Begin0, (VALUE)begin_mode, gl_End, self);
422
+ else
423
+ gl_Begin0(begin_mode);
424
+
425
+ return Qnil;
426
+ }
427
+
428
+ static VALUE
429
+ gl_PopMatrix(VALUE self)
430
+ {
431
+ glPopMatrix();
432
+
433
+ CHECK_GLERROR_FROM("glPopMatrix");
434
+
435
+ return Qnil;
436
+ }
437
+
438
+ static VALUE
439
+ gl_PushMatrix0(void)
440
+ {
441
+ glPushMatrix();
442
+
443
+ if (rb_block_given_p())
444
+ rb_yield(Qnil);
445
+
446
+ return Qnil;
447
+ }
448
+
449
+ static VALUE
450
+ gl_PushMatrix(VALUE self)
451
+ {
452
+ if (rb_block_given_p())
453
+ return rb_ensure(gl_PushMatrix0, (VALUE)NULL, gl_PopMatrix, self);
454
+ else
455
+ glPushMatrix();
456
+
457
+ return Qnil;
458
+ }
459
+
460
+ static VALUE
461
+ gl_NewList0(VALUE args)
462
+ {
463
+ GLuint list;
464
+ GLenum mode;
465
+
466
+ list = (GLuint)NUM2UINT(rb_ary_entry(args, 0));
467
+ mode = RUBY2GLENUM(rb_ary_entry(args, 1));
468
+
469
+ glNewList(list, mode);
470
+
471
+ if (rb_block_given_p())
472
+ rb_yield(Qundef);
473
+
474
+ return Qnil;
475
+ }
476
+
477
+ static VALUE
478
+ gl_EndList(VALUE self)
479
+ {
480
+ glEndList();
481
+
482
+ return Qnil;
483
+ }
484
+
485
+ static VALUE
486
+ gl_NewList(VALUE self, VALUE list, VALUE mode)
487
+ {
488
+ VALUE args = rb_ary_new2(2);
489
+ rb_ary_push(args, list);
490
+ rb_ary_push(args, mode);
491
+
492
+ if (rb_block_given_p())
493
+ return rb_ensure(gl_NewList0, args, gl_EndList, self);
494
+ else
495
+ gl_NewList0(args);
496
+
226
497
  return Qnil;
227
498
  }
228
499
 
@@ -237,7 +508,7 @@ VALUE obj,arg1,arg2;
237
508
  lists = pack_array_or_pass_string(type,arg2);
238
509
  n = (GLsizei)RSTRING_LENINT(lists) / gltype_glformat_unit_size(type,1);
239
510
  glCallLists(n, type, RSTRING_PTR(lists));
240
- CHECK_GLERROR
511
+ CHECK_GLERROR_FROM("glCallLists");
241
512
  return Qnil;
242
513
  }
243
514
 
@@ -268,7 +539,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
268
539
 
269
540
  glBitmap(width, height, xorig, yorig, xmove, ymove, (const GLubyte *)RSTRING_PTR(data));
270
541
  }
271
- CHECK_GLERROR
542
+ CHECK_GLERROR_FROM("glBitmap");
272
543
  return Qnil;
273
544
  }
274
545
 
@@ -280,7 +551,7 @@ VALUE obj,arg1;
280
551
  Check_Type(arg1,T_ARRAY);
281
552
  ary2cboolean(arg1,flag,1);
282
553
  glEdgeFlagv(flag);
283
- CHECK_GLERROR
554
+ CHECK_GLERROR_FROM("glEdgeFlagv");
284
555
  return Qnil;
285
556
  }
286
557
 
@@ -292,7 +563,7 @@ VALUE obj,arg1;
292
563
  Check_Type(arg1,T_ARRAY);
293
564
  ary2cdbl(arg1,c,1);
294
565
  glIndexdv(c);
295
- CHECK_GLERROR
566
+ CHECK_GLERROR_FROM("glIndexdv");
296
567
  return Qnil;
297
568
  }
298
569
 
@@ -304,7 +575,7 @@ VALUE obj,arg1;
304
575
  Check_Type(arg1,T_ARRAY);
305
576
  ary2cflt(arg1,c,1);
306
577
  glIndexfv(c);
307
- CHECK_GLERROR
578
+ CHECK_GLERROR_FROM("glIndexfv");
308
579
  return Qnil;
309
580
  }
310
581
 
@@ -316,7 +587,7 @@ VALUE obj,arg1;
316
587
  Check_Type(arg1,T_ARRAY);
317
588
  ary2cint(arg1,c,1);
318
589
  glIndexiv(c);
319
- CHECK_GLERROR
590
+ CHECK_GLERROR_FROM("glIndexiv");
320
591
  return Qnil;
321
592
  }
322
593
 
@@ -328,7 +599,7 @@ VALUE obj,arg1;
328
599
  Check_Type(arg1,T_ARRAY);
329
600
  ary2cshort(arg1,c,1);
330
601
  glIndexsv(c);
331
- CHECK_GLERROR
602
+ CHECK_GLERROR_FROM("glIndexsv");
332
603
  return Qnil;
333
604
  }
334
605
 
@@ -342,7 +613,7 @@ VALUE obj,arg1,arg2;
342
613
  Check_Type(arg2,T_ARRAY);
343
614
  ary2cdbl(arg2, equation, 4);
344
615
  glClipPlane(plane,equation);
345
- CHECK_GLERROR
616
+ CHECK_GLERROR_FROM("glClipPlane");
346
617
  return Qnil;
347
618
  }
348
619
 
@@ -356,7 +627,7 @@ VALUE obj,arg1,arg2;
356
627
  Check_Type(arg2,T_ARRAY);
357
628
  ary2cflt(arg2,params,4);
358
629
  glFogfv(pname,params);
359
- CHECK_GLERROR
630
+ CHECK_GLERROR_FROM("glFogfv");
360
631
  return Qnil;
361
632
  }
362
633
 
@@ -370,7 +641,7 @@ VALUE obj,arg1,arg2;
370
641
  Check_Type(arg2,T_ARRAY);
371
642
  ary2cint(arg2,params,4);
372
643
  glFogiv(pname,params);
373
- CHECK_GLERROR
644
+ CHECK_GLERROR_FROM("glFogiv");
374
645
  return Qnil;
375
646
  }
376
647
 
@@ -386,7 +657,7 @@ VALUE obj,arg1,arg2,arg3;
386
657
  Check_Type(arg3,T_ARRAY);
387
658
  ary2cflt(arg3,params,4);
388
659
  glLightfv(light,pname,params);
389
- CHECK_GLERROR
660
+ CHECK_GLERROR_FROM("glLightfv");
390
661
  return Qnil;
391
662
  }
392
663
 
@@ -402,7 +673,7 @@ VALUE obj,arg1,arg2,arg3;
402
673
  Check_Type(arg3,T_ARRAY);
403
674
  ary2cint(arg3,params,4);
404
675
  glLightiv(light,pname,params);
405
- CHECK_GLERROR
676
+ CHECK_GLERROR_FROM("glLightiv");
406
677
  return Qnil;
407
678
  }
408
679
 
@@ -416,7 +687,7 @@ VALUE obj,arg1,arg2;
416
687
  Check_Type(arg2,T_ARRAY);
417
688
  ary2cflt(arg2,params,4);
418
689
  glLightModelfv(pname,params);
419
- CHECK_GLERROR
690
+ CHECK_GLERROR_FROM("glLightModelfv");
420
691
  return Qnil;
421
692
  }
422
693
 
@@ -430,7 +701,7 @@ VALUE obj,arg1,arg2;
430
701
  Check_Type(arg2,T_ARRAY);
431
702
  ary2cint(arg2,params,4);
432
703
  glLightModeliv(pname,params);
433
- CHECK_GLERROR
704
+ CHECK_GLERROR_FROM("glLightModeliv");
434
705
  return Qnil;
435
706
  }
436
707
 
@@ -447,7 +718,7 @@ VALUE obj,arg1,arg2,arg3;
447
718
  Check_Type(arg3,T_ARRAY);
448
719
  ary2cflt(arg3,params,4);
449
720
  glMaterialfv(face,pname,params);
450
- CHECK_GLERROR
721
+ CHECK_GLERROR_FROM("glMaterialfv");
451
722
  return Qnil;
452
723
  }
453
724
 
@@ -463,7 +734,7 @@ VALUE obj,arg1,arg2,arg3;
463
734
  Check_Type(arg3,T_ARRAY);
464
735
  ary2cint(arg3,params,4);
465
736
  glMaterialiv(face,pname,params);
466
- CHECK_GLERROR
737
+ CHECK_GLERROR_FROM("glMaterialiv");
467
738
  return Qnil;
468
739
  }
469
740
 
@@ -481,7 +752,7 @@ VALUE obj,arg1;
481
752
 
482
753
  glPolygonStipple((GLubyte *)RSTRING_PTR(data));
483
754
  }
484
- CHECK_GLERROR
755
+ CHECK_GLERROR_FROM("glPolygonStipple");
485
756
  return Qnil;
486
757
  }
487
758
 
@@ -498,7 +769,7 @@ VALUE obj,arg1,arg2,arg3;
498
769
  Check_Type(arg3,T_ARRAY);
499
770
  ary2cflt(arg3,params,4);
500
771
  glTexParameterfv(target,pname,params);
501
- CHECK_GLERROR
772
+ CHECK_GLERROR_FROM("glTexParameterfv");
502
773
  return Qnil;
503
774
  }
504
775
 
@@ -514,7 +785,7 @@ VALUE obj,arg1,arg2,arg3;
514
785
  Check_Type(arg3,T_ARRAY);
515
786
  ary2cint(arg3,params,4);
516
787
  glTexParameteriv(target,pname,params);
517
- CHECK_GLERROR
788
+ CHECK_GLERROR_FROM("glTexParameteriv");
518
789
  return Qnil;
519
790
  }
520
791
 
@@ -540,7 +811,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
540
811
 
541
812
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
542
813
  glTexImage1D(target,level,components,width,border,format,type,(GLvoid *)NUM2LONG(arg8));
543
- CHECK_GLERROR
814
+ CHECK_GLERROR_FROM("glTexImage1D");
544
815
  return Qnil;
545
816
  }
546
817
 
@@ -553,7 +824,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
553
824
  pixels = RSTRING_PTR(data);
554
825
  }
555
826
  glTexImage1D(target,level,components,width,border,format,type,pixels);
556
- CHECK_GLERROR
827
+ CHECK_GLERROR_FROM("glTexImage1D");
557
828
  return Qnil;
558
829
  }
559
830
 
@@ -581,7 +852,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
581
852
 
582
853
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
583
854
  glTexImage2D(target,level,components,width,height,border,format,type,(GLvoid *)NUM2LONG(arg9));
584
- CHECK_GLERROR
855
+ CHECK_GLERROR_FROM("glTexImage2D");
585
856
  return Qnil;
586
857
  }
587
858
 
@@ -594,7 +865,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
594
865
  pixels = RSTRING_PTR(data);
595
866
  }
596
867
  glTexImage2D(target,level,components,width,height,border,format,type,pixels);
597
- CHECK_GLERROR
868
+ CHECK_GLERROR_FROM("glTexImage2D");
598
869
  return Qnil;
599
870
  }
600
871
 
@@ -610,7 +881,7 @@ VALUE obj,arg1,arg2,arg3;
610
881
  Check_Type(arg3,T_ARRAY);
611
882
  ary2cflt(arg3,params,4);
612
883
  glTexEnvfv(target,pname,params);
613
- CHECK_GLERROR
884
+ CHECK_GLERROR_FROM("glTexEnvfv");
614
885
  return Qnil;
615
886
  }
616
887
 
@@ -626,7 +897,7 @@ VALUE obj,arg1,arg2,arg3;
626
897
  Check_Type(arg3,T_ARRAY);
627
898
  ary2cint(arg3,params,4);
628
899
  glTexEnviv(target,pname,params);
629
- CHECK_GLERROR
900
+ CHECK_GLERROR_FROM("glTexEnviv");
630
901
  return Qnil;
631
902
  }
632
903
 
@@ -643,7 +914,7 @@ VALUE obj,arg1,arg2,arg3;
643
914
  Check_Type(arg3,T_ARRAY);
644
915
  ary2cdbl(arg3,params,4);
645
916
  glTexGendv(coord,pname,params);
646
- CHECK_GLERROR
917
+ CHECK_GLERROR_FROM("glTexGendv");
647
918
  return Qnil;
648
919
  }
649
920
 
@@ -660,7 +931,7 @@ VALUE obj,arg1,arg2,arg3;
660
931
  Check_Type(arg3,T_ARRAY);
661
932
  ary2cflt(arg3,params,4);
662
933
  glTexGenfv(coord,pname,params);
663
- CHECK_GLERROR
934
+ CHECK_GLERROR_FROM("glTexGenfv");
664
935
  return Qnil;
665
936
  }
666
937
 
@@ -677,7 +948,7 @@ VALUE obj,arg1,arg2,arg3;
677
948
  Check_Type(arg3,T_ARRAY);
678
949
  ary2cint(arg3,params,4);
679
950
  glTexGeniv(coord,pname,params);
680
- CHECK_GLERROR
951
+ CHECK_GLERROR_FROM("glTexGeniv");
681
952
  return Qnil;
682
953
  }
683
954
  static VALUE g_current_feed_buffer;
@@ -692,7 +963,7 @@ VALUE obj,arg1,arg2;
692
963
  g_current_feed_buffer = allocate_buffer_with_string(sizeof(GLfloat)*size);
693
964
  rb_str_freeze(g_current_feed_buffer);
694
965
  glFeedbackBuffer(size, type, (GLfloat*)RSTRING_PTR(g_current_feed_buffer));
695
- CHECK_GLERROR
966
+ CHECK_GLERROR_FROM("glFeedbackBuffer");
696
967
  return g_current_feed_buffer;
697
968
  }
698
969
 
@@ -706,7 +977,7 @@ VALUE obj,arg1;
706
977
  g_current_sel_buffer = allocate_buffer_with_string(sizeof(GLuint)*size);
707
978
  rb_str_freeze(g_current_sel_buffer);
708
979
  glSelectBuffer(size, (GLuint*)RSTRING_PTR(g_current_sel_buffer));
709
- CHECK_GLERROR
980
+ CHECK_GLERROR_FROM("glSelectBuffer");
710
981
  return g_current_sel_buffer;
711
982
  }
712
983
 
@@ -734,7 +1005,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
734
1005
  ary2cdbl(work_ary, points, order*stride);
735
1006
  glMap1d(target, u1, u2, stride, order, points);
736
1007
  xfree(points);
737
- CHECK_GLERROR
1008
+ CHECK_GLERROR_FROM("glMap1d");
738
1009
  return Qnil;
739
1010
  }
740
1011
 
@@ -761,7 +1032,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
761
1032
  ary2cflt(work_ary, points, order*stride);
762
1033
  glMap1f(target, u1, u2, stride, order, points);
763
1034
  xfree(points);
764
- CHECK_GLERROR
1035
+ CHECK_GLERROR_FROM("glMap1f");
765
1036
  return Qnil;
766
1037
  }
767
1038
 
@@ -796,7 +1067,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10;
796
1067
  ary2cdbl(work_ary, points, MAX(ustride*uorder, vstride*vorder));
797
1068
  glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
798
1069
  xfree(points);
799
- CHECK_GLERROR
1070
+ CHECK_GLERROR_FROM("glMap2d");
800
1071
  return Qnil;
801
1072
  }
802
1073
 
@@ -831,7 +1102,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10;
831
1102
  ary2cflt(work_ary, points, MAX(ustride*uorder, vstride*vorder));
832
1103
  glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
833
1104
  xfree(points);
834
- CHECK_GLERROR
1105
+ CHECK_GLERROR_FROM("glMap2f");
835
1106
  return Qnil;
836
1107
  }
837
1108
 
@@ -843,7 +1114,7 @@ VALUE obj,arg1;
843
1114
  Check_Type(arg1,T_ARRAY);
844
1115
  ary2cdbl(arg1,params,1);
845
1116
  glEvalCoord1dv(params);
846
- CHECK_GLERROR
1117
+ CHECK_GLERROR_FROM("glEvalCoord1dv");
847
1118
  return Qnil;
848
1119
  }
849
1120
 
@@ -855,7 +1126,7 @@ VALUE obj,arg1;
855
1126
  Check_Type(arg1,T_ARRAY);
856
1127
  ary2cflt(arg1,params,1);
857
1128
  glEvalCoord1fv(params);
858
- CHECK_GLERROR
1129
+ CHECK_GLERROR_FROM("glEvalCoord1fv");
859
1130
  return Qnil;
860
1131
  }
861
1132
 
@@ -867,7 +1138,7 @@ VALUE obj,arg1;
867
1138
  Check_Type(arg1,T_ARRAY);
868
1139
  ary2cdbl(arg1,params,2);
869
1140
  glEvalCoord2dv(params);
870
- CHECK_GLERROR
1141
+ CHECK_GLERROR_FROM("glEvalCoord2fv");
871
1142
  return Qnil;
872
1143
  }
873
1144
 
@@ -879,7 +1150,7 @@ VALUE obj,arg1;
879
1150
  Check_Type(arg1,T_ARRAY);
880
1151
  ary2cflt(arg1,params,2);
881
1152
  glEvalCoord2fv(params);
882
- CHECK_GLERROR
1153
+ CHECK_GLERROR_FROM("glEvalCoord2fv");
883
1154
  return Qnil;
884
1155
  }
885
1156
 
@@ -916,7 +1187,7 @@ VALUE obj; \
916
1187
  glPixelMap##_type_##v(map,size,(GLvoid *)NUM2LONG(args[2])); \
917
1188
  break; \
918
1189
  } \
919
- CHECK_GLERROR \
1190
+ CHECK_GLERROR_FROM("glPixelMap" #_type_ "v"); \
920
1191
  return Qnil; \
921
1192
  }
922
1193
 
@@ -958,7 +1229,7 @@ VALUE obj;
958
1229
  FORCE_PIXEL_STORE_MODE
959
1230
  glReadPixels(x,y,width,height,format,type,(GLvoid*)RSTRING_PTR(pixels));
960
1231
  RESTORE_PIXEL_STORE_MODE
961
- CHECK_GLERROR
1232
+ CHECK_GLERROR_FROM("glReadPixels");
962
1233
  return pixels;
963
1234
  break;
964
1235
  case 7:
@@ -967,7 +1238,7 @@ VALUE obj;
967
1238
  FORCE_PIXEL_STORE_MODE
968
1239
  glReadPixels(x,y,width,height,format,type,(GLvoid*)NUM2LONG(args[6]));
969
1240
  RESTORE_PIXEL_STORE_MODE
970
- CHECK_GLERROR
1241
+ CHECK_GLERROR_FROM("glReadPixels");
971
1242
  return Qnil;
972
1243
  break;
973
1244
  }
@@ -995,7 +1266,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5;
995
1266
  pixels = RSTRING_PTR(data);
996
1267
  glDrawPixels(width,height,format,type,pixels);
997
1268
  }
998
- CHECK_GLERROR
1269
+ CHECK_GLERROR_FROM("glDrawPixels");
999
1270
  return Qnil;
1000
1271
  }
1001
1272
 
@@ -1012,7 +1283,7 @@ VALUE obj,arg1;
1012
1283
  retary = rb_ary_new2(4);
1013
1284
  for(i=0;i<4;i++)
1014
1285
  rb_ary_push(retary, rb_float_new(equation[i]));
1015
- CHECK_GLERROR
1286
+ CHECK_GLERROR_FROM("glGetClipPlane");
1016
1287
  return retary;
1017
1288
  }
1018
1289
 
@@ -1135,28 +1406,28 @@ VALUE obj,arg1; \
1135
1406
  for (j = 0; j < 4; j++) \
1136
1407
  rb_ary_push(ary2, _conv_(items[i*4+j])); \
1137
1408
  } \
1138
- CHECK_GLERROR \
1409
+ CHECK_GLERROR_FROM("glGet" #_name_ "v"); \
1139
1410
  return ary; \
1140
1411
  case GL_POLYGON_STIPPLE: \
1141
1412
  glGet##_name_##v(pname, items); \
1142
- CHECK_GLERROR \
1413
+ CHECK_GLERROR_FROM("glGet" #_name_ "v"); \
1143
1414
  return rb_str_new((const char*)items, 32); \
1144
1415
  case GL_COMPRESSED_TEXTURE_FORMATS: \
1145
1416
  glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &nitems); \
1146
- CHECK_GLERROR \
1417
+ CHECK_GLERROR_FROM("glGetIntegerv"); \
1147
1418
  if (nitems<=0||nitems>64) \
1148
1419
  return INT2NUM(0); \
1149
1420
  break; \
1150
1421
  default: /* size=1 */ \
1151
1422
  glGet##_name_##v(pname, items); \
1152
- CHECK_GLERROR \
1423
+ CHECK_GLERROR_FROM("glGet" #_name_ "v"); \
1153
1424
  return _conv_(items[0]); \
1154
1425
  } \
1155
1426
  glGet##_name_##v(pname, items); \
1156
1427
  ary = rb_ary_new2(nitems); \
1157
1428
  for (i = 0; i < nitems; i++) \
1158
1429
  rb_ary_push(ary, _conv_(items[i])); \
1159
- CHECK_GLERROR \
1430
+ CHECK_GLERROR_FROM("glGet" #_name_ "v"); \
1160
1431
  return ary; \
1161
1432
  }
1162
1433
 
@@ -1200,7 +1471,7 @@ VALUE obj,arg1,arg2;
1200
1471
  break; /* not reached */
1201
1472
  }
1202
1473
  glGetLightfv(light,pname,params);
1203
- RET_ARRAY_OR_SINGLE(size,rb_float_new,params)
1474
+ RET_ARRAY_OR_SINGLE("glGetLightfv", size, rb_float_new, params);
1204
1475
  }
1205
1476
 
1206
1477
  static VALUE
@@ -1235,7 +1506,7 @@ VALUE obj,arg1,arg2;
1235
1506
  break; /* not reached */
1236
1507
  }
1237
1508
  glGetLightiv(light,pname,params);
1238
- RET_ARRAY_OR_SINGLE(size,INT2NUM,params)
1509
+ RET_ARRAY_OR_SINGLE("glGetLightiv", size, INT2NUM, params);
1239
1510
  }
1240
1511
 
1241
1512
  #define GETMAP_FUNC(_name_,_type_) \
@@ -1280,7 +1551,7 @@ VALUE obj,arg1,arg2; \
1280
1551
  case GL_DOMAIN: size = dims*2; break; \
1281
1552
  case GL_COEFF: \
1282
1553
  glGetMapiv(target,GL_ORDER,order); \
1283
- CHECK_GLERROR \
1554
+ CHECK_GLERROR_FROM("glGetMapiv"); \
1284
1555
  if (dims==1) \
1285
1556
  size = order[0] * pointsize; \
1286
1557
  else \
@@ -1293,7 +1564,7 @@ VALUE obj,arg1,arg2; \
1293
1564
  points = ALLOC_N(_type_,size); \
1294
1565
  gl##_name_(target,query,points); \
1295
1566
  \
1296
- RET_ARRAY_OR_SINGLE_FREE(size,RETCONV_##_type_,points) \
1567
+ RET_ARRAY_OR_SINGLE_FREE("gl" #_name_, size, RETCONV_##_type_, points); \
1297
1568
  }
1298
1569
 
1299
1570
  GETMAP_FUNC(GetMapdv,GLdouble)
@@ -1329,7 +1600,7 @@ VALUE obj,arg1,arg2;
1329
1600
  break; /* not reached */
1330
1601
  }
1331
1602
  glGetMaterialfv(face,pname,params);
1332
- RET_ARRAY_OR_SINGLE(size,rb_float_new,params)
1603
+ RET_ARRAY_OR_SINGLE("glGetMaterialfv", size, rb_float_new, params);
1333
1604
  }
1334
1605
 
1335
1606
  static VALUE
@@ -1360,7 +1631,7 @@ VALUE obj,arg1,arg2;
1360
1631
  break; /* not reached */
1361
1632
  }
1362
1633
  glGetMaterialiv(face,pname,params);
1363
- RET_ARRAY_OR_SINGLE(size,INT2NUM,params)
1634
+ RET_ARRAY_OR_SINGLE("glGetMaterialiv", size, INT2NUM, params);
1364
1635
  }
1365
1636
 
1366
1637
  #define GLGETPIXELMAP_FUNC(_type_,_vartype_,_convert_) \
@@ -1379,7 +1650,8 @@ VALUE obj; \
1379
1650
  default: \
1380
1651
  case 1: \
1381
1652
  if (CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING)) \
1382
- rb_raise(rb_eArgError, "Pixel pack buffer bound, but offset argument missing"); \
1653
+ rb_raise(rb_eArgError, \
1654
+ "Pixel pack buffer bound, but offset argument missing"); \
1383
1655
  \
1384
1656
  map = (GLenum)NUM2INT(args[0]); \
1385
1657
  switch(map) { \
@@ -1398,10 +1670,11 @@ VALUE obj; \
1398
1670
  break; \
1399
1671
  } \
1400
1672
  glGetIntegerv(map_size,&size); \
1401
- CHECK_GLERROR \
1673
+ CHECK_GLERROR_FROM("glGetIntegerv"); \
1402
1674
  values = ALLOC_N(_vartype_,size); \
1403
1675
  glGetPixelMap##_type_##v(map,values); \
1404
- RET_ARRAY_OR_SINGLE_FREE(size,_convert_,values) \
1676
+ RET_ARRAY_OR_SINGLE_FREE("glGetPixelMap" #_type_ "v", size, _convert_, \
1677
+ values); \
1405
1678
  break; \
1406
1679
  case 2: \
1407
1680
  if (!CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING)) \
@@ -1409,7 +1682,7 @@ VALUE obj; \
1409
1682
  \
1410
1683
  map = (GLenum)NUM2INT(args[0]); \
1411
1684
  glGetPixelMap##_type_##v(map,(GLvoid*)NUM2LONG(args[1])); \
1412
- CHECK_GLERROR \
1685
+ CHECK_GLERROR_FROM("glGetPixelMap" #_type_ "v"); \
1413
1686
  return Qnil; \
1414
1687
  } \
1415
1688
  }
@@ -1436,13 +1709,13 @@ VALUE obj;
1436
1709
  FORCE_PIXEL_STORE_MODE
1437
1710
  glGetPolygonStipple(mask);
1438
1711
  RESTORE_PIXEL_STORE_MODE
1439
- CHECK_GLERROR
1712
+ CHECK_GLERROR_FROM("glGetPolygonStipple");
1440
1713
  return rb_str_new((const char*)mask, 128);
1441
1714
  case 1:
1442
1715
  if (!CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING))
1443
1716
  rb_raise(rb_eArgError, "Pixel pack buffer not bound");
1444
1717
  glGetPolygonStipple((GLvoid *)NUM2LONG(args[0]));
1445
- CHECK_GLERROR
1718
+ CHECK_GLERROR_FROM("glGetPolygonStipple");
1446
1719
  return Qnil;
1447
1720
  }
1448
1721
  }
@@ -1455,7 +1728,7 @@ VALUE obj,arg1;
1455
1728
  const GLubyte *ret;
1456
1729
  name = (GLenum)NUM2INT(arg1);
1457
1730
  ret = glGetString(name);
1458
- CHECK_GLERROR
1731
+ CHECK_GLERROR_FROM("glGetString");
1459
1732
  return rb_str_new2((const char*)ret);
1460
1733
  }
1461
1734
 
@@ -1485,7 +1758,7 @@ VALUE obj,arg1,arg2; \
1485
1758
  break; \
1486
1759
  } \
1487
1760
  gl##_name_(target,pname,params); \
1488
- RET_ARRAY_OR_SINGLE(size,RETCONV_##_type_,params) \
1761
+ RET_ARRAY_OR_SINGLE("gl" #_name_, size, RETCONV_##_type_, params); \
1489
1762
  }
1490
1763
 
1491
1764
  GETTEXENVFUNC(GetTexEnvfv,GLfloat)
@@ -1513,7 +1786,7 @@ VALUE obj,arg1,arg2; \
1513
1786
  break; \
1514
1787
  } \
1515
1788
  gl##_name_(coord,pname,params); \
1516
- RET_ARRAY_OR_SINGLE(size,RETCONV_##_type_,params) \
1789
+ RET_ARRAY_OR_SINGLE("gl" #_name_, size, RETCONV_##_type_, params); \
1517
1790
  }
1518
1791
 
1519
1792
  GETTEXGENFUNC(GetTexGendv,GLdouble)
@@ -1581,13 +1854,13 @@ VALUE obj;
1581
1854
  default:
1582
1855
  rb_raise(rb_eArgError, "Target type not supported");
1583
1856
  }
1584
- CHECK_GLERROR
1857
+ CHECK_GLERROR_FROM("glGetTexLevelParameteriv");
1585
1858
  pixels = allocate_buffer_with_string(GetDataSize(type,format,size));
1586
1859
 
1587
1860
  FORCE_PIXEL_STORE_MODE
1588
1861
  glGetTexImage(tex,lod,format,type,(GLvoid*)RSTRING_PTR(pixels));
1589
1862
  RESTORE_PIXEL_STORE_MODE
1590
- CHECK_GLERROR
1863
+ CHECK_GLERROR_FROM("glGetTexImage");
1591
1864
  return pixels;
1592
1865
  break;
1593
1866
  case 5:
@@ -1597,7 +1870,7 @@ VALUE obj;
1597
1870
  FORCE_PIXEL_STORE_MODE
1598
1871
  glGetTexImage(tex,lod,format,type,(GLvoid*)NUM2LONG(args[4]));
1599
1872
  RESTORE_PIXEL_STORE_MODE
1600
- CHECK_GLERROR
1873
+ CHECK_GLERROR_FROM("glGetTexImage");
1601
1874
  return Qnil;
1602
1875
  }
1603
1876
  }
@@ -1624,7 +1897,7 @@ VALUE obj,arg1,arg2;
1624
1897
  break;
1625
1898
  }
1626
1899
  glGetTexParameterfv(target,pname,params);
1627
- RET_ARRAY_OR_SINGLE(size,RETCONV_GLfloat,params)
1900
+ RET_ARRAY_OR_SINGLE("glGetTexParameterfv", size, RETCONV_GLfloat, params);
1628
1901
  }
1629
1902
 
1630
1903
  static VALUE
@@ -1649,7 +1922,8 @@ VALUE obj,arg1,arg2;
1649
1922
  break;
1650
1923
  }
1651
1924
  glGetTexParameteriv(target,pname,params);
1652
- RET_ARRAY_OR_SINGLE_BOOL(size,cond_GLBOOL2RUBY,pname,params)
1925
+ RET_ARRAY_OR_SINGLE_BOOL("glGetTexParameteriv", size, cond_GLBOOL2RUBY,
1926
+ pname, params);
1653
1927
  }
1654
1928
 
1655
1929
  static VALUE
@@ -1664,7 +1938,7 @@ VALUE obj,arg1,arg2,arg3;
1664
1938
  level = (GLint)NUM2INT(arg2);
1665
1939
  pname = (GLenum)NUM2INT(arg3);
1666
1940
  glGetTexLevelParameterfv(target,level,pname,&params);
1667
- CHECK_GLERROR
1941
+ CHECK_GLERROR_FROM("glGetTexLevelParameterfv");
1668
1942
  return RETCONV_GLfloat(params);
1669
1943
  }
1670
1944
 
@@ -1680,7 +1954,7 @@ VALUE obj,arg1,arg2,arg3;
1680
1954
  level = (GLint)NUM2INT(arg2);
1681
1955
  pname = (GLenum)NUM2INT(arg3);
1682
1956
  glGetTexLevelParameteriv(target,level,pname,&params);
1683
- CHECK_GLERROR
1957
+ CHECK_GLERROR_FROM("glGetTexLevelParameteriv");
1684
1958
  return cond_GLBOOL2RUBY(pname,params);
1685
1959
  }
1686
1960
 
@@ -1692,7 +1966,7 @@ VALUE obj,arg1;
1692
1966
  GLfloat m[4*4];
1693
1967
  ary2cmatfloat(arg1, m, 4, 4);
1694
1968
  glLoadMatrixf(m);
1695
- CHECK_GLERROR
1969
+ CHECK_GLERROR_FROM("glLoadMatrixf");
1696
1970
  return Qnil;
1697
1971
  }
1698
1972
 
@@ -1703,7 +1977,7 @@ VALUE obj,arg1;
1703
1977
  GLdouble m[4*4];
1704
1978
  ary2cmatdouble(arg1, m, 4, 4);
1705
1979
  glLoadMatrixd(m);
1706
- CHECK_GLERROR
1980
+ CHECK_GLERROR_FROM("glLoadMatrixd");
1707
1981
  return Qnil;
1708
1982
  }
1709
1983
 
@@ -1714,7 +1988,7 @@ VALUE obj,arg1;
1714
1988
  GLfloat m[4*4];
1715
1989
  ary2cmatfloat(arg1, m, 4, 4);
1716
1990
  glMultMatrixf(m);
1717
- CHECK_GLERROR
1991
+ CHECK_GLERROR_FROM("glMultMatrixf");
1718
1992
  return Qnil;
1719
1993
  }
1720
1994
 
@@ -1725,7 +1999,7 @@ VALUE obj,arg1;
1725
1999
  GLdouble m[4*4];
1726
2000
  ary2cmatdouble(arg1, m, 4, 4);
1727
2001
  glMultMatrixd(m);
1728
- CHECK_GLERROR
2002
+ CHECK_GLERROR_FROM("glMultMatrixd");
1729
2003
  return Qnil;
1730
2004
  }
1731
2005
 
@@ -1759,7 +2033,7 @@ VALUE obj, arg1, arg2, arg3, arg4; \
1759
2033
  g_##_func_##_ptr = data; \
1760
2034
  gl##_func_##Pointer(size, type, stride, (const GLvoid*)RSTRING_PTR(data)); \
1761
2035
  } \
1762
- CHECK_GLERROR \
2036
+ CHECK_GLERROR_FROM("gl" #_func_ "Pointer"); \
1763
2037
  return Qnil; \
1764
2038
  }
1765
2039
 
@@ -1786,7 +2060,7 @@ VALUE obj,arg1,arg2,arg3,arg4;
1786
2060
  data = pack_array_or_pass_string(type,arg4);
1787
2061
  glDrawElements(mode, count, type, (const GLvoid*)RSTRING_PTR(data));
1788
2062
  }
1789
- CHECK_GLERROR
2063
+ CHECK_GLERROR_FROM("glDrawElements");
1790
2064
  return Qnil;
1791
2065
  }
1792
2066
 
@@ -1806,7 +2080,7 @@ VALUE obj,arg1,arg2;
1806
2080
  g_EdgeFlag_ptr = data;
1807
2081
  glEdgeFlagPointer(stride, (const GLvoid*)RSTRING_PTR(data));
1808
2082
  }
1809
- CHECK_GLERROR
2083
+ CHECK_GLERROR_FROM("glEdgeFlagPointer");
1810
2084
  return Qnil;
1811
2085
  }
1812
2086
 
@@ -1861,7 +2135,7 @@ VALUE obj,arg1,arg2,arg3;
1861
2135
  g_Index_ptr = data;
1862
2136
  glIndexPointer(type, stride, (const GLvoid*)RSTRING_PTR(data));
1863
2137
  }
1864
- CHECK_GLERROR
2138
+ CHECK_GLERROR_FROM("glIndexPointer");
1865
2139
  return Qnil;
1866
2140
  }
1867
2141
 
@@ -1878,7 +2152,7 @@ VALUE obj,arg1,arg2,arg3;
1878
2152
  data = pack_array_or_pass_string(GL_FLOAT,arg3);
1879
2153
  rb_str_freeze(data);
1880
2154
  glInterleavedArrays(format, stride, (const GLvoid*)RSTRING_PTR(data));
1881
- CHECK_GLERROR
2155
+ CHECK_GLERROR_FROM("glInterleavedArrays");
1882
2156
  return Qnil;
1883
2157
  }
1884
2158
 
@@ -1900,7 +2174,7 @@ VALUE obj,arg1,arg2,arg3;
1900
2174
  g_Normal_ptr = data;
1901
2175
  glNormalPointer(type, stride, (const GLvoid*)RSTRING_PTR(data));
1902
2176
  }
1903
- CHECK_GLERROR
2177
+ CHECK_GLERROR_FROM("glNormalPointer");
1904
2178
  return Qnil;
1905
2179
  }
1906
2180
 
@@ -1925,7 +2199,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
1925
2199
 
1926
2200
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
1927
2201
  glTexSubImage1D(target,level,xoffset,width,format,type,(GLvoid *)NUM2LONG(arg7));
1928
- CHECK_GLERROR
2202
+ CHECK_GLERROR_FROM("glTexSubImage1D");
1929
2203
  return Qnil;
1930
2204
  }
1931
2205
 
@@ -1933,7 +2207,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
1933
2207
  CheckDataSize(type,format,width,data);
1934
2208
 
1935
2209
  glTexSubImage1D(target,level,xoffset,width,format,type,RSTRING_PTR(data));
1936
- CHECK_GLERROR
2210
+ CHECK_GLERROR_FROM("glTexSubImage1D");
1937
2211
  return Qnil;
1938
2212
  }
1939
2213
 
@@ -1961,7 +2235,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
1961
2235
 
1962
2236
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
1963
2237
  glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,(GLvoid *)NUM2LONG(arg9));
1964
- CHECK_GLERROR
2238
+ CHECK_GLERROR_FROM("glTexSubImage2D");
1965
2239
  return Qnil;
1966
2240
  }
1967
2241
 
@@ -1969,7 +2243,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
1969
2243
  CheckDataSize(type,format,width*height,data);
1970
2244
 
1971
2245
  glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,RSTRING_PTR(data));
1972
- CHECK_GLERROR
2246
+ CHECK_GLERROR_FROM("glTexSubImage2D");
1973
2247
  return Qnil;
1974
2248
  }
1975
2249
 
@@ -2000,7 +2274,7 @@ VALUE obj,arg1;
2000
2274
  }
2001
2275
  xfree(textures);
2002
2276
  xfree(residences);
2003
- CHECK_GLERROR
2277
+ CHECK_GLERROR_FROM("glAreTexturesResident");
2004
2278
  return retary;
2005
2279
  }
2006
2280
 
@@ -2025,7 +2299,7 @@ VALUE obj,arg1,arg2;
2025
2299
  glPrioritizeTextures(size,textures,priorities);
2026
2300
  xfree(textures);
2027
2301
  xfree(priorities);
2028
- CHECK_GLERROR
2302
+ CHECK_GLERROR_FROM("glPrioritizeTextures");
2029
2303
  return Qnil;
2030
2304
  }
2031
2305
 
@@ -2037,7 +2311,7 @@ VALUE obj,arg1;
2037
2311
  Check_Type(arg1,T_ARRAY);
2038
2312
  ary2cubyte(arg1,c,1);
2039
2313
  glIndexubv(c);
2040
- CHECK_GLERROR
2314
+ CHECK_GLERROR_FROM("glIndexubv");
2041
2315
  return Qnil;
2042
2316
  }
2043
2317
 
@@ -2052,11 +2326,11 @@ VALUE *argv; \
2052
2326
  VALUE obj; \
2053
2327
  { \
2054
2328
  int num; \
2055
- VALUE ary, args[4]; \
2329
+ VALUE args[4]; \
2330
+ VALUE ary; \
2056
2331
  switch (num = rb_scan_args(argc, argv, "13", &args[0], &args[1], &args[2], &args[3])) { \
2057
2332
  case 1: \
2058
- if (TYPE(args[0]) == T_ARRAY) { \
2059
- ary = args[0]; \
2333
+ ary = rb_convert_type(args[0], T_ARRAY, "Array", "to_a"); \
2060
2334
  switch (RARRAY_LEN(ary)) { \
2061
2335
  case 3: \
2062
2336
  gl_Color3##_type_(obj,RARRAY_PTR(ary)[0],RARRAY_PTR(ary)[1],RARRAY_PTR(ary)[2]); \
@@ -2067,9 +2341,6 @@ VALUE obj; \
2067
2341
  default: \
2068
2342
  rb_raise(rb_eArgError, "array length:%li", RARRAY_LEN(ary)); \
2069
2343
  } \
2070
- } \
2071
- else \
2072
- Check_Type(args[0],T_ARRAY); /* force exception */ \
2073
2344
  break; \
2074
2345
  case 3: \
2075
2346
  gl_Color3##_type_(obj,args[0], args[1], args[2]); \
@@ -2101,21 +2372,18 @@ VALUE *argv; \
2101
2372
  VALUE obj; \
2102
2373
  { \
2103
2374
  int num; \
2104
- VALUE ary, args[3]; \
2375
+ VALUE args[3]; \
2376
+ VALUE ary; \
2105
2377
  switch (num = rb_scan_args(argc, argv, "12", &args[0], &args[1], &args[2])) { \
2106
2378
  case 1: \
2107
- if (TYPE(args[0]) == T_ARRAY) { \
2108
- ary = args[0]; \
2379
+ ary = rb_convert_type(args[0], T_ARRAY, "Array", "to_a"); \
2109
2380
  switch (RARRAY_LEN(ary)) { \
2110
2381
  case 3: \
2111
2382
  gl_Normal3##_type_(obj,RARRAY_PTR(ary)[0], RARRAY_PTR(ary)[1],RARRAY_PTR(ary)[2]); \
2112
2383
  break; \
2113
2384
  default: \
2114
- rb_raise(rb_eArgError, "array length:%li", RARRAY_LEN(ary)); \
2385
+ rb_raise(rb_eArgError, "array length: %li", RARRAY_LEN(ary)); \
2115
2386
  } \
2116
- } \
2117
- else \
2118
- Check_Type(args[0],T_ARRAY); /* force exception */ \
2119
2387
  break; \
2120
2388
  case 3: \
2121
2389
  gl_Normal3##_type_(obj,args[0], args[1], args[2]); \
@@ -2141,11 +2409,11 @@ VALUE *argv; \
2141
2409
  VALUE obj; \
2142
2410
  { \
2143
2411
  int num; \
2144
- VALUE ary, args[4]; \
2412
+ VALUE args[4]; \
2413
+ VALUE ary; \
2145
2414
  switch (num = rb_scan_args(argc, argv, "13", &args[0], &args[1], &args[2], &args[3])) { \
2146
2415
  case 1: \
2147
- if (TYPE(args[0]) == T_ARRAY) { \
2148
- ary = args[0]; \
2416
+ ary = rb_convert_type(args[0], T_ARRAY, "Array", "to_a"); \
2149
2417
  switch (RARRAY_LEN(ary)) { \
2150
2418
  case 2: \
2151
2419
  gl_RasterPos2##_type_(obj,RARRAY_PTR(ary)[0],RARRAY_PTR(ary)[1]); \
@@ -2159,9 +2427,6 @@ VALUE obj; \
2159
2427
  default: \
2160
2428
  rb_raise(rb_eArgError, "array length:%d", num); \
2161
2429
  } \
2162
- } \
2163
- else \
2164
- Check_Type(args[0],T_ARRAY); /* force exception */ \
2165
2430
  break; \
2166
2431
  case 2: \
2167
2432
  gl_RasterPos2##_type_(obj,args[0], args[1]); \
@@ -2192,28 +2457,29 @@ VALUE *argv; \
2192
2457
  VALUE obj; \
2193
2458
  { \
2194
2459
  int num; \
2195
- VALUE ary, ary2, args[4]; \
2460
+ VALUE args[4]; \
2461
+ VALUE ary1, ary2; \
2196
2462
  switch (num = rb_scan_args(argc, argv, "22", &args[0], &args[1], &args[2], &args[3])) { \
2197
2463
  case 2: \
2198
- if (TYPE(args[0]) == T_ARRAY && TYPE(args[1]) == T_ARRAY) { \
2199
- ary = args[0]; \
2200
- ary2 = args[1]; \
2201
- switch (RARRAY_LEN(ary)) { \
2202
- case 2: \
2203
- gl_Rect##_type_(obj,RARRAY_PTR(ary)[0],RARRAY_PTR(ary)[1],RARRAY_PTR(ary2)[0],RARRAY_PTR(ary2)[1]); \
2204
- break; \
2205
- default: \
2206
- rb_raise(rb_eArgError, "array length:%li", RARRAY_LEN(ary)); \
2207
- } \
2208
- } \
2209
- else \
2210
- Check_Type(args[0],T_ARRAY); /* force exception */ \
2464
+ ary1 = rb_convert_type(args[0], T_ARRAY, "Array", "to_a"); \
2465
+ ary2 = rb_convert_type(args[1], T_ARRAY, "Array", "to_a"); \
2466
+ if (RARRAY_LEN(ary1) != 2) \
2467
+ rb_raise(rb_eArgError, "first array must be of length 2 (was %li)", \
2468
+ RARRAY_LEN(ary1)); \
2469
+ \
2470
+ if (RARRAY_LEN(ary2) != 2) \
2471
+ rb_raise(rb_eArgError, "second array must be of length 2 (was %li)", \
2472
+ RARRAY_LEN(ary2)); \
2473
+ \
2474
+ gl_Rect##_type_(obj, \
2475
+ RARRAY_PTR(ary1)[0], RARRAY_PTR(ary1)[1], \
2476
+ RARRAY_PTR(ary2)[0], RARRAY_PTR(ary2)[1]); \
2211
2477
  break; \
2212
2478
  case 4: \
2213
2479
  gl_Rect##_type_(obj,args[0], args[1], args[2], args[3]); \
2214
2480
  break; \
2215
2481
  default: \
2216
- rb_raise(rb_eArgError, "arg length:%d", num); \
2482
+ rb_raise(rb_eArgError, "arg length: %d", num); \
2217
2483
  } \
2218
2484
  return Qnil; \
2219
2485
  }
@@ -2232,11 +2498,11 @@ VALUE *argv; \
2232
2498
  VALUE obj; \
2233
2499
  { \
2234
2500
  int num; \
2235
- VALUE ary, args[4]; \
2501
+ VALUE args[4]; \
2502
+ VALUE ary; \
2236
2503
  switch (num = rb_scan_args(argc, argv, "13", &args[0], &args[1], &args[2], &args[3])) { \
2237
2504
  case 1: \
2238
- if (TYPE(args[0]) == T_ARRAY) { \
2239
- ary = args[0]; \
2505
+ ary = rb_convert_type(args[0], T_ARRAY, "Array", "to_a"); \
2240
2506
  switch (RARRAY_LEN(ary)) { \
2241
2507
  case 1: \
2242
2508
  gl_TexCoord1##_type_(obj,RARRAY_PTR(ary)[0]); \
@@ -2251,11 +2517,8 @@ VALUE obj; \
2251
2517
  gl_TexCoord4##_type_(obj,RARRAY_PTR(ary)[0],RARRAY_PTR(ary)[1],RARRAY_PTR(ary)[2],RARRAY_PTR(ary)[3]); \
2252
2518
  break; \
2253
2519
  default: \
2254
- rb_raise(rb_eArgError, "array length:%d", num); \
2520
+ rb_raise(rb_eArgError, "array length: %d", num); \
2255
2521
  } \
2256
- } \
2257
- else \
2258
- gl_TexCoord1##_type_(obj,args[0]); \
2259
2522
  break; \
2260
2523
  case 2: \
2261
2524
  gl_TexCoord2##_type_(obj,args[0], args[1]); \
@@ -2286,11 +2549,11 @@ int argc; \
2286
2549
  VALUE *argv; \
2287
2550
  VALUE obj; \
2288
2551
  { \
2289
- VALUE ary, args[4]; \
2552
+ VALUE args[4]; \
2553
+ VALUE ary; \
2290
2554
  switch (rb_scan_args(argc, argv, "13", &args[0], &args[1], &args[2], &args[3])) { \
2291
2555
  case 1: \
2292
- if (TYPE(args[0]) == T_ARRAY) { \
2293
- ary = args[0]; \
2556
+ ary = rb_convert_type(args[0], T_ARRAY, "Array", "to_a"); \
2294
2557
  switch (RARRAY_LEN(ary)) { \
2295
2558
  case 2: \
2296
2559
  gl_Vertex2##_type_(obj,RARRAY_PTR(ary)[0],RARRAY_PTR(ary)[1]); \
@@ -2302,11 +2565,8 @@ VALUE obj; \
2302
2565
  gl_Vertex4##_type_(obj,RARRAY_PTR(ary)[0],RARRAY_PTR(ary)[1],RARRAY_PTR(ary)[2],RARRAY_PTR(ary)[3]); \
2303
2566
  break; \
2304
2567
  default: \
2305
- rb_raise(rb_eRuntimeError, "glVertex vertex num error!:%li", RARRAY_LEN(ary)); \
2568
+ rb_raise(rb_eRuntimeError, "glVertex vertex num error!: %ld", RARRAY_LEN(ary)); \
2306
2569
  } \
2307
- } \
2308
- else \
2309
- Check_Type(args[0],T_ARRAY); /* force exception */ \
2310
2570
  break; \
2311
2571
  case 2: \
2312
2572
  gl_Vertex2##_type_(obj,args[0], args[1]); \
@@ -2345,13 +2605,17 @@ VALUE obj,arg1,arg2;
2345
2605
  }
2346
2606
 
2347
2607
  static VALUE
2348
- gl_Material(obj,arg1,arg2,arg3)
2349
- VALUE obj,arg1,arg2,arg3;
2608
+ gl_Material(VALUE self, VALUE face, VALUE pname, VALUE param)
2350
2609
  {
2351
- if (TYPE(arg3) == T_ARRAY)
2352
- gl_Materialfv(obj,arg1,arg2,arg3);
2353
- else
2354
- gl_Materialf(obj,arg1,arg2,arg3);
2610
+ VALUE ary;
2611
+
2612
+ if (RB_TYPE_P(param, T_ARRAY)) {
2613
+ gl_Materialfv(self, face, pname, param);
2614
+ } else if (ary = rb_convert_type(param, T_ARRAY, "Array", "to_a")) {
2615
+ gl_Materialfv(self, face, pname, ary);
2616
+ } else {
2617
+ gl_Materialf(self, face, pname, param);
2618
+ }
2355
2619
 
2356
2620
  return Qnil;
2357
2621
  }
@@ -2572,8 +2836,8 @@ void gl_init_functions_1_0__1_1(VALUE module)
2572
2836
  rb_define_module_function(module, "glDepthMask", gl_DepthMask, 1);
2573
2837
  rb_define_module_function(module, "glIndexMask", gl_IndexMask, 1);
2574
2838
  rb_define_module_function(module, "glAccum", gl_Accum, 2);
2575
- rb_define_module_function(module, "glDisable", gl_Disable, 1);
2576
- rb_define_module_function(module, "glEnable", gl_Enable, 1);
2839
+ rb_define_module_function(module, "glDisable", gl_Disable, -1);
2840
+ rb_define_module_function(module, "glEnable", gl_Enable, -1);
2577
2841
  rb_define_module_function(module, "glFinish", gl_Finish, 0);
2578
2842
  rb_define_module_function(module, "glFlush", gl_Flush, 0);
2579
2843
  rb_define_module_function(module, "glPopAttrib", gl_PopAttrib, 0);
@@ -2668,11 +2932,11 @@ void gl_init_functions_1_0__1_1(VALUE module)
2668
2932
  /* OpenGL 1.1 functions */
2669
2933
  rb_define_module_function(module, "glArrayElement", gl_ArrayElement, 1);
2670
2934
  rb_define_module_function(module, "glColorPointer", gl_ColorPointer, 4);
2671
- rb_define_module_function(module, "glDisableClientState", gl_DisableClientState, 1);
2935
+ rb_define_module_function(module, "glDisableClientState", gl_DisableClientState, -1);
2672
2936
  rb_define_module_function(module, "glDrawArrays", gl_DrawArrays, 3);
2673
2937
  rb_define_module_function(module, "glDrawElements", gl_DrawElements, 4);
2674
2938
  rb_define_module_function(module, "glEdgeFlagPointer", gl_EdgeFlagPointer, 2);
2675
- rb_define_module_function(module, "glEnableClientState", gl_EnableClientState, 1);
2939
+ rb_define_module_function(module, "glEnableClientState", gl_EnableClientState, -1);
2676
2940
  rb_define_module_function(module, "glGetPointerv", gl_GetPointerv, 1);
2677
2941
  rb_define_module_function(module, "glIndexPointer", gl_IndexPointer, 3);
2678
2942
  rb_define_module_function(module, "glInterleavedArrays", gl_InterleavedArrays, 3);