ruby-opengl 0.50.0 → 0.60.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }