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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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);