ruby-opengl 0.50.0 → 0.60.0

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 (118) hide show
  1. data/Rakefile +15 -11
  2. data/doc/build_install.txt +10 -6
  3. data/doc/extensions.txt.in +348 -0
  4. data/doc/history.txt +4 -0
  5. data/doc/roadmap.txt +4 -6
  6. data/doc/scientific_use.txt +7 -0
  7. data/doc/supplies/page_template.html +2 -1
  8. data/doc/thanks.txt +5 -0
  9. data/doc/tutorial.txt +431 -121
  10. data/examples/NeHe/nehe_lesson02.rb +1 -1
  11. data/examples/NeHe/nehe_lesson03.rb +1 -1
  12. data/examples/NeHe/nehe_lesson04.rb +1 -1
  13. data/examples/NeHe/nehe_lesson05.rb +1 -1
  14. data/examples/NeHe/nehe_lesson36.rb +1 -1
  15. data/examples/OrangeBook/brick.rb +3 -15
  16. data/examples/OrangeBook/particle.rb +2 -20
  17. data/examples/RedBook/aapoly.rb +1 -1
  18. data/examples/RedBook/aargb.rb +2 -2
  19. data/examples/RedBook/accanti.rb +1 -1
  20. data/examples/RedBook/accpersp.rb +1 -1
  21. data/examples/RedBook/alpha.rb +2 -2
  22. data/examples/RedBook/alpha3D.rb +1 -1
  23. data/examples/RedBook/bezcurve.rb +1 -1
  24. data/examples/RedBook/bezmesh.rb +1 -1
  25. data/examples/RedBook/checker.rb +1 -1
  26. data/examples/RedBook/clip.rb +1 -1
  27. data/examples/RedBook/colormat.rb +1 -1
  28. data/examples/RedBook/cube.rb +1 -1
  29. data/examples/RedBook/depthcue.rb +1 -1
  30. data/examples/RedBook/dof.rb +1 -1
  31. data/examples/RedBook/double.rb +1 -1
  32. data/examples/RedBook/drawf.rb +1 -1
  33. data/examples/RedBook/feedback.rb +1 -1
  34. data/examples/RedBook/fog.rb +1 -1
  35. data/examples/RedBook/font.rb +2 -2
  36. data/examples/RedBook/hello.rb +1 -1
  37. data/examples/RedBook/image.rb +4 -4
  38. data/examples/RedBook/lines.rb +1 -1
  39. data/examples/RedBook/list.rb +1 -1
  40. data/examples/RedBook/material.rb +1 -1
  41. data/examples/RedBook/mipmap.rb +1 -1
  42. data/examples/RedBook/model.rb +1 -1
  43. data/examples/RedBook/movelight.rb +1 -1
  44. data/examples/RedBook/pickdepth.rb +1 -1
  45. data/examples/RedBook/planet.rb +5 -5
  46. data/examples/RedBook/quadric.rb +1 -1
  47. data/examples/RedBook/robot.rb +5 -5
  48. data/examples/RedBook/select.rb +1 -1
  49. data/examples/RedBook/smooth.rb +1 -1
  50. data/examples/RedBook/stencil.rb +1 -1
  51. data/examples/RedBook/stroke.rb +2 -2
  52. data/examples/RedBook/surface.rb +1 -1
  53. data/examples/RedBook/teaambient.rb +1 -1
  54. data/examples/RedBook/teapots.rb +1 -1
  55. data/examples/RedBook/tess.rb +1 -1
  56. data/examples/RedBook/texbind.rb +1 -1
  57. data/examples/RedBook/texgen.rb +5 -5
  58. data/examples/RedBook/texturesurf.rb +1 -1
  59. data/examples/RedBook/varray.rb +1 -1
  60. data/examples/RedBook/wrap.rb +5 -5
  61. data/examples/misc/OGLBench.rb +337 -0
  62. data/examples/misc/anisotropic.rb +1 -1
  63. data/examples/misc/fbo_test.rb +356 -0
  64. data/examples/misc/font-glut.rb +1 -1
  65. data/examples/misc/glfwtest.rb +30 -0
  66. data/examples/misc/md2model.rb +15 -0
  67. data/examples/misc/plane.rb +1 -1
  68. data/examples/misc/readpixel.rb +1 -1
  69. data/examples/misc/sdltest.rb +34 -0
  70. data/examples/misc/trislam.rb +828 -0
  71. data/ext/common/common.h +126 -218
  72. data/ext/common/conv.h +244 -0
  73. data/ext/common/funcdef.h +280 -0
  74. data/ext/common/gl-error.h +23 -0
  75. data/ext/common/gl-types.h +14 -0
  76. data/ext/gl/gl-1.0-1.1.c +497 -1255
  77. data/ext/gl/gl-1.2.c +121 -304
  78. data/ext/gl/gl-1.3.c +78 -339
  79. data/ext/gl/gl-1.4.c +102 -164
  80. data/ext/gl/gl-1.5.c +42 -173
  81. data/ext/gl/gl-2.0.c +273 -1039
  82. data/ext/gl/gl-2.1.c +15 -19
  83. data/ext/gl/gl-enums.c +3 -2
  84. data/ext/gl/gl-error.c +104 -0
  85. data/ext/gl/gl-ext-3dfx.c +27 -0
  86. data/ext/gl/gl-ext-arb.c +812 -12
  87. data/ext/gl/gl-ext-ati.c +41 -0
  88. data/ext/gl/gl-ext-ext.c +791 -119
  89. data/ext/gl/gl-ext-gremedy.c +41 -0
  90. data/ext/gl/gl-ext-nv.c +679 -0
  91. data/ext/gl/gl.c +48 -28
  92. data/ext/gl/mkrf_conf.rb +13 -10
  93. data/ext/glu/glu-enums.c +3 -2
  94. data/ext/glu/glu.c +136 -41
  95. data/ext/glu/mkrf_conf.rb +15 -12
  96. data/ext/glut/glut.c +37 -80
  97. data/ext/glut/mkrf_conf.rb +17 -13
  98. data/lib/opengl.rb +29 -53
  99. data/test/tc_common.rb +9 -3
  100. data/test/tc_ext_arb.rb +397 -3
  101. data/test/tc_ext_ati.rb +33 -0
  102. data/test/tc_ext_ext.rb +479 -2
  103. data/test/tc_ext_gremedy.rb +36 -0
  104. data/test/tc_ext_nv.rb +357 -0
  105. data/test/tc_func_10_11.rb +93 -67
  106. data/test/tc_func_12.rb +11 -11
  107. data/test/tc_func_13.rb +38 -18
  108. data/test/tc_func_14.rb +2 -2
  109. data/test/tc_func_15.rb +10 -10
  110. data/test/tc_func_20.rb +20 -20
  111. data/test/tc_func_21.rb +53 -22
  112. data/test/tc_glu.rb +9 -4
  113. data/test/tc_misc.rb +15 -2
  114. metadata +22 -8
  115. data/doc/extensions.txt +0 -361
  116. data/examples/RedBook/aaindex.rb +0 -97
  117. data/examples/misc/smooth.rb +0 -42
  118. data/examples/misc/test.rb +0 -65
@@ -17,280 +17,25 @@
17
17
 
18
18
  /* OpenGL 1.3 functions */
19
19
 
20
- GL_SIMPLE_FUNC_LOAD(ActiveTexture,1,GLenum,NUM2INT)
21
- GL_SIMPLE_FUNC_LOAD(ClientActiveTexture,1,GLenum,NUM2INT)
22
-
23
- static void (APIENTRY * fptr_glMultiTexCoord1d)(GLenum,GLdouble);
24
- static VALUE
25
- gl_MultiTexCoord1d(obj,arg1,arg2)
26
- VALUE obj,arg1,arg2;
27
- {
28
- GLenum target;
29
- GLdouble s;
30
- LOAD_GL_FUNC(glMultiTexCoord1d)
31
- target = (GLenum)NUM2INT(arg1);
32
- s = (GLdouble)NUM2DBL(arg2);
33
- fptr_glMultiTexCoord1d(target,s);
34
- return Qnil;
35
- }
36
-
37
- static void (APIENTRY * fptr_glMultiTexCoord1f)(GLenum,GLfloat);
38
- static VALUE
39
- gl_MultiTexCoord1f(obj,arg1,arg2)
40
- VALUE obj,arg1,arg2;
41
- {
42
- GLenum target;
43
- GLfloat s;
44
- LOAD_GL_FUNC(glMultiTexCoord1f)
45
- target = (GLenum)NUM2INT(arg1);
46
- s = (GLfloat)NUM2DBL(arg2);
47
- fptr_glMultiTexCoord1f(target,s);
48
- return Qnil;
49
- }
50
-
51
- static void (APIENTRY * fptr_glMultiTexCoord1i)(GLenum,GLint);
52
- static VALUE
53
- gl_MultiTexCoord1i(obj,arg1,arg2)
54
- VALUE obj,arg1,arg2;
55
- {
56
- GLenum target;
57
- GLint s;
58
- LOAD_GL_FUNC(glMultiTexCoord1i)
59
- target = (GLenum)NUM2INT(arg1);
60
- s = (GLint)NUM2INT(arg2);
61
- fptr_glMultiTexCoord1i(target,s);
62
- return Qnil;
63
- }
64
-
65
- static void (APIENTRY * fptr_glMultiTexCoord1s)(GLenum,GLshort);
66
- static VALUE
67
- gl_MultiTexCoord1s(obj,arg1,arg2)
68
- VALUE obj,arg1,arg2;
69
- {
70
- GLenum target;
71
- GLshort s;
72
- LOAD_GL_FUNC(glMultiTexCoord1s)
73
- target = (GLenum)NUM2INT(arg1);
74
- s = (GLshort)NUM2INT(arg2);
75
- fptr_glMultiTexCoord1s(target,s);
76
- return Qnil;
77
- }
78
-
79
- static void (APIENTRY * fptr_glMultiTexCoord2d)(GLenum,GLdouble,GLdouble);
80
- static VALUE
81
- gl_MultiTexCoord2d(obj,arg1,arg2,arg3)
82
- VALUE obj,arg1,arg2,arg3;
83
- {
84
- GLenum target;
85
- GLdouble s;
86
- GLdouble t;
87
- LOAD_GL_FUNC(glMultiTexCoord2d)
88
- target = (GLenum)NUM2INT(arg1);
89
- s = (GLdouble)NUM2DBL(arg2);
90
- t = (GLdouble)NUM2DBL(arg3);
91
- fptr_glMultiTexCoord2d(target,s,t);
92
- return Qnil;
93
- }
94
-
95
- static void (APIENTRY * fptr_glMultiTexCoord2f)(GLenum,GLfloat,GLfloat);
96
- static VALUE
97
- gl_MultiTexCoord2f(obj,arg1,arg2,arg3)
98
- VALUE obj,arg1,arg2,arg3;
99
- {
100
- GLenum target;
101
- GLfloat s;
102
- GLfloat t;
103
- LOAD_GL_FUNC(glMultiTexCoord2f)
104
- target = (GLenum)NUM2INT(arg1);
105
- s = (GLfloat)NUM2DBL(arg2);
106
- t = (GLfloat)NUM2DBL(arg3);
107
- fptr_glMultiTexCoord2f(target,s,t);
108
- return Qnil;
109
- }
110
-
111
- static void (APIENTRY * fptr_glMultiTexCoord2i)(GLenum,GLint,GLint);
112
- static VALUE
113
- gl_MultiTexCoord2i(obj,arg1,arg2,arg3)
114
- VALUE obj,arg1,arg2,arg3;
115
- {
116
- GLenum target;
117
- GLint s;
118
- GLint t;
119
- LOAD_GL_FUNC(glMultiTexCoord2i)
120
- target = (GLenum)NUM2INT(arg1);
121
- s = (GLint)NUM2INT(arg2);
122
- t = (GLint)NUM2INT(arg3);
123
- fptr_glMultiTexCoord2i(target,s,t);
124
- return Qnil;
125
- }
126
-
127
- static void (APIENTRY * fptr_glMultiTexCoord2s)(GLenum,GLshort,GLshort);
128
- static VALUE
129
- gl_MultiTexCoord2s(obj,arg1,arg2,arg3)
130
- VALUE obj,arg1,arg2,arg3;
131
- {
132
- GLenum target;
133
- GLshort s;
134
- GLshort t;
135
- LOAD_GL_FUNC(glMultiTexCoord2s)
136
- target = (GLenum)NUM2INT(arg1);
137
- s = (GLshort)NUM2INT(arg2);
138
- t = (GLshort)NUM2INT(arg3);
139
- fptr_glMultiTexCoord2s(target,s,t);
140
- return Qnil;
141
- }
142
-
143
- static void (APIENTRY * fptr_glMultiTexCoord3d)(GLenum,GLdouble,GLdouble,GLdouble);
144
- static VALUE
145
- gl_MultiTexCoord3d(obj,arg1,arg2,arg3,arg4)
146
- VALUE obj,arg1,arg2,arg3,arg4;
147
- {
148
- GLenum target;
149
- GLdouble s;
150
- GLdouble t;
151
- GLdouble r;
152
- LOAD_GL_FUNC(glMultiTexCoord3d)
153
- target = (GLenum)NUM2INT(arg1);
154
- s = (GLdouble)NUM2DBL(arg2);
155
- t = (GLdouble)NUM2DBL(arg3);
156
- r = (GLdouble)NUM2DBL(arg4);
157
- fptr_glMultiTexCoord3d(target,s,t,r);
158
- return Qnil;
159
- }
160
-
161
- static void (APIENTRY * fptr_glMultiTexCoord3f)(GLenum,GLfloat,GLfloat,GLfloat);
162
- static VALUE
163
- gl_MultiTexCoord3f(obj,arg1,arg2,arg3,arg4)
164
- VALUE obj,arg1,arg2,arg3,arg4;
165
- {
166
- GLenum target;
167
- GLfloat s;
168
- GLfloat t;
169
- GLfloat r;
170
- LOAD_GL_FUNC(glMultiTexCoord3f)
171
- target = (GLenum)NUM2INT(arg1);
172
- s = (GLfloat)NUM2DBL(arg2);
173
- t = (GLfloat)NUM2DBL(arg3);
174
- r = (GLfloat)NUM2DBL(arg4);
175
- fptr_glMultiTexCoord3f(target,s,t,r);
176
- return Qnil;
177
- }
178
-
179
- static void (APIENTRY * fptr_glMultiTexCoord3i)(GLenum,GLint,GLint,GLint);
180
- static VALUE
181
- gl_MultiTexCoord3i(obj,arg1,arg2,arg3,arg4)
182
- VALUE obj,arg1,arg2,arg3,arg4;
183
- {
184
- GLenum target;
185
- GLint s;
186
- GLint t;
187
- GLint r;
188
- LOAD_GL_FUNC(glMultiTexCoord3i)
189
- target = (GLenum)NUM2INT(arg1);
190
- s = (GLint)NUM2INT(arg2);
191
- t = (GLint)NUM2INT(arg3);
192
- r = (GLint)NUM2INT(arg4);
193
- fptr_glMultiTexCoord3i(target,s,t,r);
194
- return Qnil;
195
- }
196
-
197
- static void (APIENTRY * fptr_glMultiTexCoord3s)(GLenum,GLshort,GLshort,GLshort);
198
- static VALUE
199
- gl_MultiTexCoord3s(obj,arg1,arg2,arg3,arg4)
200
- VALUE obj,arg1,arg2,arg3,arg4;
201
- {
202
- GLenum target;
203
- GLshort s;
204
- GLshort t;
205
- GLshort r;
206
- LOAD_GL_FUNC(glMultiTexCoord3s)
207
- target = (GLenum)NUM2INT(arg1);
208
- s = (GLshort)NUM2INT(arg2);
209
- t = (GLshort)NUM2INT(arg3);
210
- r = (GLshort)NUM2INT(arg4);
211
- fptr_glMultiTexCoord3s(target,s,t,r);
212
- return Qnil;
213
- }
214
-
215
- static void (APIENTRY * fptr_glMultiTexCoord4d)(GLenum,GLdouble,GLdouble,GLdouble,GLdouble);
216
- static VALUE
217
- gl_MultiTexCoord4d(obj,arg1,arg2,arg3,arg4,arg5)
218
- VALUE obj,arg1,arg2,arg3,arg4,arg5;
219
- {
220
- GLenum target;
221
- GLdouble s;
222
- GLdouble t;
223
- GLdouble r;
224
- GLdouble q;
225
- LOAD_GL_FUNC(glMultiTexCoord4d)
226
- target = (GLenum)NUM2INT(arg1);
227
- s = (GLdouble)NUM2DBL(arg2);
228
- t = (GLdouble)NUM2DBL(arg3);
229
- r = (GLdouble)NUM2DBL(arg4);
230
- q = (GLdouble)NUM2DBL(arg5);
231
- fptr_glMultiTexCoord4d(target,s,t,r,q);
232
- return Qnil;
233
- }
234
-
235
- static void (APIENTRY * fptr_glMultiTexCoord4f)(GLenum,GLfloat,GLfloat,GLfloat,GLfloat);
236
- static VALUE
237
- gl_MultiTexCoord4f(obj,arg1,arg2,arg3,arg4,arg5)
238
- VALUE obj,arg1,arg2,arg3,arg4,arg5;
239
- {
240
- GLenum target;
241
- GLfloat s;
242
- GLfloat t;
243
- GLfloat r;
244
- GLfloat q;
245
- LOAD_GL_FUNC(glMultiTexCoord4f)
246
- target = (GLenum)NUM2INT(arg1);
247
- s = (GLfloat)NUM2DBL(arg2);
248
- t = (GLfloat)NUM2DBL(arg3);
249
- r = (GLfloat)NUM2DBL(arg4);
250
- q = (GLfloat)NUM2DBL(arg5);
251
- fptr_glMultiTexCoord4f(target,s,t,r,q);
252
- return Qnil;
253
- }
254
-
255
- static void (APIENTRY * fptr_glMultiTexCoord4i)(GLenum,GLint,GLint,GLint,GLint);
256
- static VALUE
257
- gl_MultiTexCoord4i(obj,arg1,arg2,arg3,arg4,arg5)
258
- VALUE obj,arg1,arg2,arg3,arg4,arg5;
259
- {
260
- GLenum target;
261
- GLint s;
262
- GLint t;
263
- GLint r;
264
- GLint q;
265
- LOAD_GL_FUNC(glMultiTexCoord4i)
266
- target = (GLenum)NUM2INT(arg1);
267
- s = (GLint)NUM2INT(arg2);
268
- t = (GLint)NUM2INT(arg3);
269
- r = (GLint)NUM2INT(arg4);
270
- q = (GLint)NUM2INT(arg5);
271
- fptr_glMultiTexCoord4i(target,s,t,r,q);
272
- return Qnil;
273
- }
274
-
275
- static void (APIENTRY * fptr_glMultiTexCoord4s)(GLenum,GLshort,GLshort,GLshort,GLshort);
276
- static VALUE
277
- gl_MultiTexCoord4s(obj,arg1,arg2,arg3,arg4,arg5)
278
- VALUE obj,arg1,arg2,arg3,arg4,arg5;
279
- {
280
- GLenum target;
281
- GLshort s;
282
- GLshort t;
283
- GLshort r;
284
- GLshort q;
285
- LOAD_GL_FUNC(glMultiTexCoord4s)
286
- target = (GLenum)NUM2INT(arg1);
287
- s = (GLshort)NUM2INT(arg2);
288
- t = (GLshort)NUM2INT(arg3);
289
- r = (GLshort)NUM2INT(arg4);
290
- q = (GLshort)NUM2INT(arg5);
291
- fptr_glMultiTexCoord4s(target,s,t,r,q);
292
- return Qnil;
293
- }
20
+ GL_FUNC_LOAD_1(ActiveTexture,GLvoid, GLenum, "1.3")
21
+ GL_FUNC_LOAD_1(ClientActiveTexture,GLvoid, GLenum, "1.3")
22
+ GL_FUNC_LOAD_2(MultiTexCoord1d,GLvoid, GLenum,GLdouble, "1.3")
23
+ GL_FUNC_LOAD_2(MultiTexCoord1f,GLvoid, GLenum,GLfloat, "1.3")
24
+ GL_FUNC_LOAD_2(MultiTexCoord1i,GLvoid, GLenum,GLint, "1.3")
25
+ GL_FUNC_LOAD_2(MultiTexCoord1s,GLvoid, GLenum,GLshort, "1.3")
26
+ GL_FUNC_LOAD_3(MultiTexCoord2d,GLvoid, GLenum,GLdouble,GLdouble, "1.3")
27
+ GL_FUNC_LOAD_3(MultiTexCoord2f,GLvoid, GLenum,GLfloat,GLfloat, "1.3")
28
+ GL_FUNC_LOAD_3(MultiTexCoord2i,GLvoid, GLenum,GLint,GLint, "1.3")
29
+ GL_FUNC_LOAD_3(MultiTexCoord2s,GLvoid, GLenum,GLshort,GLshort, "1.3")
30
+ GL_FUNC_LOAD_4(MultiTexCoord3d,GLvoid, GLenum,GLdouble,GLdouble,GLdouble, "1.3")
31
+ GL_FUNC_LOAD_4(MultiTexCoord3f,GLvoid, GLenum,GLfloat,GLfloat,GLfloat, "1.3")
32
+ GL_FUNC_LOAD_4(MultiTexCoord3i,GLvoid, GLenum,GLint,GLint,GLint, "1.3")
33
+ GL_FUNC_LOAD_4(MultiTexCoord3s,GLvoid, GLenum,GLshort,GLshort,GLshort, "1.3")
34
+ GL_FUNC_LOAD_5(MultiTexCoord4d,GLvoid, GLenum,GLdouble,GLdouble,GLdouble,GLdouble, "1.3")
35
+ GL_FUNC_LOAD_5(MultiTexCoord4f,GLvoid, GLenum,GLfloat,GLfloat,GLfloat,GLfloat, "1.3")
36
+ GL_FUNC_LOAD_5(MultiTexCoord4i,GLvoid, GLenum,GLint,GLint,GLint,GLint, "1.3")
37
+ GL_FUNC_LOAD_5(MultiTexCoord4s,GLvoid, GLenum,GLshort,GLshort,GLshort,GLshort, "1.3")
38
+ GL_FUNC_LOAD_2(SampleCoverage,GLvoid, GLclampf,GLboolean, "1.3")
294
39
 
295
40
  #define GLMULTITEXCOORD_VFUNC(_type_) \
296
41
  static VALUE \
@@ -350,40 +95,27 @@ GLMULTITEXCOORD_VFUNC(i)
350
95
  GLMULTITEXCOORD_VFUNC(s)
351
96
  #undef GLTEXCOORD_VFUNC
352
97
 
353
- #define TRANSPOSEMATRIX_FUNC(_name_,_type_,_shorttype_) \
98
+ #define TRANSPOSEMATRIX_FUNC(_name_,_type_) \
354
99
  static void (APIENTRY * fptr_gl##_name_)(const _type_[]); \
355
100
  static VALUE \
356
101
  gl_##_name_(obj,arg1) \
357
102
  VALUE obj,arg1; \
358
103
  { \
359
104
  _type_ m[4*4]; \
360
- LOAD_GL_FUNC(gl##_name_) \
361
- ary2cmat4x4##_shorttype_(arg1, m); \
105
+ LOAD_GL_FUNC(gl##_name_,"1.3") \
106
+ ary2cmat##_type_(arg1, m, 4, 4); \
362
107
  fptr_gl##_name_(m); \
108
+ CHECK_GLERROR \
363
109
  return Qnil; \
364
110
  }
365
111
 
366
- TRANSPOSEMATRIX_FUNC(LoadTransposeMatrixf,GLfloat,flt)
367
- TRANSPOSEMATRIX_FUNC(LoadTransposeMatrixd,GLdouble,dbl)
368
- TRANSPOSEMATRIX_FUNC(MultTransposeMatrixf,GLfloat,flt)
369
- TRANSPOSEMATRIX_FUNC(MultTransposeMatrixd,GLdouble,dbl)
112
+ TRANSPOSEMATRIX_FUNC(LoadTransposeMatrixf,float)
113
+ TRANSPOSEMATRIX_FUNC(LoadTransposeMatrixd,double)
114
+ TRANSPOSEMATRIX_FUNC(MultTransposeMatrixf,float)
115
+ TRANSPOSEMATRIX_FUNC(MultTransposeMatrixd,double)
370
116
 
371
117
  #undef TRANSPOSEMATRIX_FUNC
372
118
 
373
- static void (APIENTRY * fptr_glSampleCoverage)(GLclampf,GLboolean);
374
- static VALUE
375
- gl_SampleCoverage(obj,arg1,arg2)
376
- VALUE obj,arg1,arg2;
377
- {
378
- GLclampf value;
379
- GLboolean invert;
380
- LOAD_GL_FUNC(glSampleCoverage)
381
- value = (GLclampf)NUM2DBL(arg1);
382
- invert = (GLboolean)NUM2INT(arg2);
383
- fptr_glSampleCoverage(value,invert);
384
- return Qnil;
385
- }
386
-
387
119
  static void (APIENTRY * fptr_glCompressedTexImage3D)(GLenum,GLint,GLenum,GLsizei,GLsizei,GLsizei,GLint,GLsizei,GLvoid*);
388
120
  static VALUE
389
121
  gl_CompressedTexImage3D(obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)
@@ -398,7 +130,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
398
130
  GLint border;
399
131
  GLsizei imagesize;
400
132
  GLvoid *pixels;
401
- LOAD_GL_FUNC(glCompressedTexImage3D)
133
+ LOAD_GL_FUNC(glCompressedTexImage3D,"1.3")
402
134
  target = (GLenum)NUM2INT(arg1);
403
135
  level = (GLint)NUM2INT(arg2);
404
136
  internalformat = (GLenum)NUM2INT(arg3);
@@ -410,10 +142,12 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
410
142
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
411
143
  fptr_glCompressedTexImage3D(target,level,internalformat,width,height,depth,border,imagesize,(GLvoid *)NUM2INT(arg9));
412
144
  } else {
413
- if (TYPE(arg9) == T_STRING) {
414
- if (RSTRING(arg9)->len < imagesize)
415
- rb_raise(rb_eArgError, "string length:%d",RSTRING(arg9)->len);
416
- pixels = RSTRING(arg9)->ptr;
145
+ if (TYPE(arg9) == T_STRING || TYPE(arg9) == T_ARRAY) {
146
+ VALUE data;
147
+ data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg9);
148
+ if (RSTRING_LEN(data) < imagesize)
149
+ rb_raise(rb_eArgError, "string length:%li",RSTRING_LEN(data));
150
+ pixels = RSTRING_PTR(data);
417
151
  } else if (NIL_P(arg9)) {
418
152
  pixels = NULL;
419
153
  } else {
@@ -422,6 +156,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
422
156
  }
423
157
  fptr_glCompressedTexImage3D(target,level,internalformat,width,height,depth,border,imagesize,pixels);
424
158
  }
159
+ CHECK_GLERROR
425
160
  return Qnil;
426
161
  }
427
162
 
@@ -438,7 +173,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
438
173
  GLint border;
439
174
  GLsizei imagesize;
440
175
  GLvoid *pixels;
441
- LOAD_GL_FUNC(glCompressedTexImage2D)
176
+ LOAD_GL_FUNC(glCompressedTexImage2D,"1.3")
442
177
  target = (GLenum)NUM2INT(arg1);
443
178
  level = (GLint)NUM2INT(arg2);
444
179
  internalformat = (GLenum)NUM2INT(arg3);
@@ -449,10 +184,12 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
449
184
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
450
185
  fptr_glCompressedTexImage2D(target,level,internalformat,width,height,border,imagesize,(GLvoid *)NUM2INT(arg8));
451
186
  } else {
452
- if (TYPE(arg8) == T_STRING) {
453
- if (RSTRING(arg8)->len < imagesize)
454
- rb_raise(rb_eArgError, "string length:%d",RSTRING(arg8)->len);
455
- pixels = RSTRING(arg8)->ptr;
187
+ if (TYPE(arg8) == T_STRING || TYPE(arg8) == T_ARRAY) {
188
+ VALUE data;
189
+ data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg8);
190
+ if (RSTRING_LEN(data) < imagesize)
191
+ rb_raise(rb_eArgError, "string length:%li",RSTRING_LEN(data));
192
+ pixels = RSTRING_PTR(data);
456
193
  } else if (NIL_P(arg8)) {
457
194
  pixels = NULL;
458
195
  } else {
@@ -461,6 +198,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
461
198
  }
462
199
  fptr_glCompressedTexImage2D(target,level,internalformat,width,height,border,imagesize,pixels);
463
200
  }
201
+ CHECK_GLERROR
464
202
  return Qnil;
465
203
  }
466
204
 
@@ -476,7 +214,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
476
214
  GLint border;
477
215
  GLsizei imagesize;
478
216
  GLvoid *pixels;
479
- LOAD_GL_FUNC(glCompressedTexImage1D)
217
+ LOAD_GL_FUNC(glCompressedTexImage1D,"1.3")
480
218
  target = (GLenum)NUM2INT(arg1);
481
219
  level = (GLint)NUM2INT(arg2);
482
220
  internalformat = (GLenum)NUM2INT(arg3);
@@ -486,10 +224,12 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
486
224
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
487
225
  fptr_glCompressedTexImage1D(target,level,internalformat,width,border,imagesize,(GLvoid *)NUM2INT(arg7));
488
226
  } else {
489
- if (TYPE(arg7) == T_STRING) {
490
- if (RSTRING(arg7)->len < imagesize)
491
- rb_raise(rb_eArgError, "string length:%d",RSTRING(arg7)->len);
492
- pixels = RSTRING(arg7)->ptr;
227
+ if (TYPE(arg7) == T_STRING || TYPE(arg7) == T_ARRAY) {
228
+ VALUE data;
229
+ data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg7);
230
+ if (RSTRING_LEN(data) < imagesize)
231
+ rb_raise(rb_eArgError, "string length:%li",RSTRING_LEN(data));
232
+ pixels = RSTRING_PTR(data);
493
233
  } else if (NIL_P(arg7)) {
494
234
  pixels = NULL;
495
235
  } else {
@@ -498,6 +238,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
498
238
  }
499
239
  fptr_glCompressedTexImage1D(target,level,internalformat,width,border,imagesize,pixels);
500
240
  }
241
+ CHECK_GLERROR
501
242
  return Qnil;
502
243
  }
503
244
 
@@ -517,7 +258,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11;
517
258
  GLenum format;
518
259
  GLsizei imagesize;
519
260
  GLvoid *pixels;
520
- LOAD_GL_FUNC(glCompressedTexSubImage3D)
261
+ LOAD_GL_FUNC(glCompressedTexSubImage3D,"1.3")
521
262
  target = (GLenum)NUM2INT(arg1);
522
263
  level = (GLint)NUM2INT(arg2);
523
264
  xoffset = (GLint)NUM2INT(arg3);
@@ -531,16 +272,15 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11;
531
272
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
532
273
  fptr_glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imagesize,(GLvoid *)NUM2INT(arg11));
533
274
  } else {
534
- if (TYPE(arg11) == T_STRING) {
535
- if (RSTRING(arg11)->len < imagesize)
536
- rb_raise(rb_eArgError, "string length:%d",RSTRING(arg11)->len);
537
- pixels = RSTRING(arg11)->ptr;
538
- } else {
539
- Check_Type(arg11,T_STRING); /* force exception */
540
- return Qnil;
541
- }
275
+ VALUE data;
276
+ data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg11);
277
+ if (RSTRING_LEN(data) < imagesize)
278
+ rb_raise(rb_eArgError, "string length:%li",RSTRING_LEN(data));
279
+ pixels = RSTRING_PTR(data);
280
+
542
281
  fptr_glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imagesize,pixels);
543
282
  }
283
+ CHECK_GLERROR
544
284
  return Qnil;
545
285
  }
546
286
 
@@ -558,7 +298,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
558
298
  GLenum format;
559
299
  GLsizei imagesize;
560
300
  GLvoid *pixels;
561
- LOAD_GL_FUNC(glCompressedTexSubImage2D)
301
+ LOAD_GL_FUNC(glCompressedTexSubImage2D,"1.3")
562
302
  target = (GLenum)NUM2INT(arg1);
563
303
  level = (GLint)NUM2INT(arg2);
564
304
  xoffset = (GLint)NUM2INT(arg3);
@@ -570,16 +310,14 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
570
310
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
571
311
  fptr_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imagesize,(GLvoid *)NUM2INT(arg9));
572
312
  } else {
573
- if (TYPE(arg9) == T_STRING) {
574
- if (RSTRING(arg9)->len < imagesize)
575
- rb_raise(rb_eArgError, "string length:%d",RSTRING(arg9)->len);
576
- pixels = RSTRING(arg9)->ptr;
577
- } else {
578
- Check_Type(arg9,T_STRING); /* force exception */
579
- return Qnil;
580
- }
313
+ VALUE data;
314
+ data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg9);
315
+ if (RSTRING_LEN(data) < imagesize)
316
+ rb_raise(rb_eArgError, "string length:%li",RSTRING_LEN(data));
317
+ pixels = RSTRING_PTR(data);
581
318
  fptr_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imagesize,pixels);
582
319
  }
320
+ CHECK_GLERROR
583
321
  return Qnil;
584
322
  }
585
323
 
@@ -595,7 +333,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
595
333
  GLenum format;
596
334
  GLsizei imagesize;
597
335
  GLvoid *pixels;
598
- LOAD_GL_FUNC(glCompressedTexSubImage1D)
336
+ LOAD_GL_FUNC(glCompressedTexSubImage1D,"1.3")
599
337
  target = (GLenum)NUM2INT(arg1);
600
338
  level = (GLint)NUM2INT(arg2);
601
339
  xoffset = (GLint)NUM2INT(arg3);
@@ -605,16 +343,14 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
605
343
  if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
606
344
  fptr_glCompressedTexSubImage1D(target,level,xoffset,width,format,imagesize,(GLvoid *)NUM2INT(arg7));
607
345
  } else {
608
- if (TYPE(arg7) == T_STRING) {
609
- if (RSTRING(arg7)->len < imagesize)
610
- rb_raise(rb_eArgError, "string length:%d",RSTRING(arg7)->len);
611
- pixels = RSTRING(arg7)->ptr;
612
- } else {
613
- Check_Type(arg7,T_STRING); /* force exception */
614
- return Qnil;
615
- }
346
+ VALUE data;
347
+ data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg7);
348
+ if (RSTRING_LEN(data) < imagesize)
349
+ rb_raise(rb_eArgError, "string length:%li",RSTRING_LEN(data));
350
+ pixels = RSTRING_PTR(data);
616
351
  fptr_glCompressedTexSubImage1D(target,level,xoffset,width,format,imagesize,pixels);
617
352
  }
353
+ CHECK_GLERROR
618
354
  return Qnil;
619
355
  }
620
356
 
@@ -631,7 +367,7 @@ VALUE obj;
631
367
  VALUE data;
632
368
  VALUE args[3];
633
369
  int numargs;
634
- LOAD_GL_FUNC(glGetCompressedTexImage)
370
+ LOAD_GL_FUNC(glGetCompressedTexImage,"1.3")
635
371
  numargs = rb_scan_args(argc, argv, "21", &args[0], &args[1], &args[2]);
636
372
  target = (GLenum)NUM2INT(args[0]);
637
373
  lod = (GLenum)NUM2INT(args[1]);
@@ -641,11 +377,14 @@ VALUE obj;
641
377
  if (CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING))
642
378
  rb_raise(rb_eArgError, "Pixel pack buffer bound, but offset argument missing");
643
379
  glGetTexLevelParameteriv(target,lod,GL_TEXTURE_COMPRESSED_IMAGE_SIZE,&size); /* 1.0 function */
380
+ CHECK_GLERROR
644
381
  data = allocate_buffer_with_string(size);
645
- fptr_glGetCompressedTexImage(target,lod,(GLvoid*)RSTRING(data)->ptr);
382
+ fptr_glGetCompressedTexImage(target,lod,(GLvoid*)RSTRING_PTR(data));
383
+ CHECK_GLERROR
646
384
  return data;
647
385
  case 3:
648
386
  fptr_glGetCompressedTexImage(target,lod,(GLvoid*)NUM2INT(args[2]));
387
+ CHECK_GLERROR
649
388
  return Qnil;
650
389
  }
651
390
  }