opengl 0.9.2-x64-mingw32 → 0.10.0-x64-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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -0
  3. data/{History.rdoc → History.md} +15 -0
  4. data/Manifest.txt +5 -1
  5. data/README.rdoc +25 -28
  6. data/Rakefile +125 -27
  7. data/examples/RedBook/font.rb +2 -2
  8. data/examples/RedBook/light.rb +2 -0
  9. data/examples/RedBook/stroke.rb +6 -6
  10. data/ext/opengl/GL/gl.h +2115 -0
  11. data/ext/opengl/GL/glext.h +11770 -0
  12. data/ext/opengl/common.h +116 -172
  13. data/ext/opengl/conv.h +2 -2
  14. data/ext/opengl/extconf.rb +3 -31
  15. data/ext/opengl/fptr_struct.h +912 -0
  16. data/ext/opengl/funcdef.h +29 -63
  17. data/ext/opengl/gl-1.0-1.1.c +918 -648
  18. data/ext/opengl/gl-1.2.c +13 -13
  19. data/ext/opengl/gl-1.3.c +68 -64
  20. data/ext/opengl/gl-1.4.c +64 -66
  21. data/ext/opengl/gl-1.5.c +32 -31
  22. data/ext/opengl/gl-2.0.c +126 -128
  23. data/ext/opengl/gl-2.1.c +8 -8
  24. data/ext/opengl/gl-3.0.c +102 -93
  25. data/ext/opengl/gl-enums.c +9 -29
  26. data/ext/opengl/gl-enums.h +31 -91
  27. data/ext/opengl/gl-error.c +15 -17
  28. data/ext/opengl/gl-error.h +4 -7
  29. data/ext/opengl/gl-ext-3dfx.c +2 -2
  30. data/ext/opengl/gl-ext-arb.c +176 -171
  31. data/ext/opengl/gl-ext-ati.c +4 -4
  32. data/ext/opengl/gl-ext-ext.c +151 -155
  33. data/ext/opengl/gl-ext-gremedy.c +4 -4
  34. data/ext/opengl/gl-ext-nv.c +141 -142
  35. data/ext/opengl/gl.c +121 -76
  36. data/ext/opengl/gl_buffer.c +44 -19
  37. data/ext/opengl/glimpl.c +187 -0
  38. data/ext/opengl/glimpl.h +47 -0
  39. data/ext/opengl/opengl.c +5 -3
  40. data/lib/opengl.rb +24 -4
  41. data/lib/opengl/2.0/opengl.so +0 -0
  42. data/lib/opengl/2.1/opengl.so +0 -0
  43. data/lib/opengl/2.2/opengl.so +0 -0
  44. data/lib/opengl/2.3/opengl.so +0 -0
  45. data/lib/opengl/2.4/opengl.so +0 -0
  46. data/lib/opengl/bindings_version.rb +4 -0
  47. data/lib/opengl/implementation.rb +38 -0
  48. data/opengl.gemspec +32 -0
  49. data/test/test_gl.rb +7 -0
  50. data/test/test_gl_21.rb +21 -21
  51. data/test/test_gl_ext_arb.rb +1 -1
  52. data/test/test_glimpl.rb +23 -0
  53. data/test/test_opengl_buffer.rb +2 -0
  54. data/utils/enumgen.rb +2 -2
  55. metadata +74 -61
  56. checksums.yaml.gz.sig +0 -0
  57. data.tar.gz.sig +0 -0
  58. data/ext/opengl/gl-types.h +0 -67
  59. metadata.gz.sig +0 -2
@@ -18,13 +18,13 @@
18
18
  /* OpenGL ATI extensions */
19
19
 
20
20
  /* #277 GL_ATI_draw_buffers */
21
- static void (APIENTRY * fptr_glDrawBuffersATI)(GLsizei,const GLenum *);
22
21
  static VALUE gl_DrawBuffersATI(VALUE obj,VALUE arg1)
23
22
  {
24
23
  GLsizei size;
25
24
  GLenum *buffers;
25
+ DECL_GL_FUNC_PTR(GLvoid,glDrawBuffersATI,(GLsizei,const GLenum *));
26
26
  LOAD_GL_FUNC(glDrawBuffersATI, "GL_ATI_draw_buffers");
27
- Check_Type(arg1,T_ARRAY);
27
+ Check_Type(arg1,T_ARRAY);
28
28
  size = (GLsizei)RARRAY_LENINT(arg1);
29
29
  buffers = ALLOC_N(GLenum,size);
30
30
  ary2cuint(arg1,buffers,size);
@@ -34,8 +34,8 @@ static VALUE gl_DrawBuffersATI(VALUE obj,VALUE arg1)
34
34
  return Qnil;
35
35
  }
36
36
 
37
- void gl_init_functions_ext_ati(VALUE module)
37
+ void gl_init_functions_ext_ati(VALUE klass)
38
38
  {
39
39
  /* #277 GL_ATI_draw_buffers */
40
- rb_define_module_function(module, "glDrawBuffersATI", gl_DrawBuffersATI, 1);
40
+ rb_define_method(klass, "glDrawBuffersATI", gl_DrawBuffersATI, 1);
41
41
  }
@@ -30,7 +30,6 @@ GL_FUNC_GENOBJECTS_LOAD(GenTexturesEXT,"GL_EXT_texture_object")
30
30
  GL_FUNC_DELETEOBJECTS_LOAD(DeleteTexturesEXT,"GL_EXT_texture_object")
31
31
  GL_FUNC_LOAD_2(BindTextureEXT,GLvoid, GLenum,GLint, "GL_EXT_texture_object")
32
32
 
33
- static void (APIENTRY * fptr_glPrioritizeTexturesEXT)(GLsizei,const GLuint *,const GLclampf *);
34
33
  static VALUE
35
34
  gl_PrioritizeTexturesEXT(obj,arg1,arg2)
36
35
  VALUE obj,arg1,arg2;
@@ -38,6 +37,7 @@ VALUE obj,arg1,arg2;
38
37
  GLuint *textures;
39
38
  GLclampf *priorities;
40
39
  GLsizei size;
40
+ DECL_GL_FUNC_PTR(GLvoid,glPrioritizeTexturesEXT,(GLsizei,const GLuint *,const GLclampf *));
41
41
  LOAD_GL_FUNC(glPrioritizeTexturesEXT, "GL_EXT_texture_object");
42
42
  Check_Type(arg1,T_ARRAY);
43
43
  Check_Type(arg2,T_ARRAY);
@@ -54,7 +54,6 @@ VALUE obj,arg1,arg2;
54
54
  return Qnil;
55
55
  }
56
56
 
57
- static GLboolean (APIENTRY * fptr_glAreTexturesResidentEXT)(GLsizei,const GLuint *,GLboolean *);
58
57
  static VALUE
59
58
  gl_AreTexturesResidentEXT(obj,arg1)
60
59
  VALUE obj,arg1;
@@ -66,6 +65,7 @@ VALUE obj,arg1;
66
65
  VALUE retary;
67
66
  VALUE ary;
68
67
  int i;
68
+ DECL_GL_FUNC_PTR(GLboolean,glAreTexturesResidentEXT,(GLsizei,const GLuint *,GLboolean *));
69
69
  LOAD_GL_FUNC(glAreTexturesResidentEXT, "GL_EXT_texture_object");
70
70
  ary = rb_Array(arg1);
71
71
  size = (GLsizei)RARRAY_LENINT(ary);
@@ -95,12 +95,12 @@ GL_FUNC_LOAD_1(BlendEquationEXT,GLvoid, GLenum, "GL_EXT_blend_minmax")
95
95
  /* #54 - GL_EXT_point_parameters */
96
96
  GL_FUNC_LOAD_2(PointParameterfEXT,GLvoid, GLenum,GLfloat, "GL_EXT_point_parameters")
97
97
 
98
- static void (APIENTRY * fptr_glPointParameterfvEXT)(GLenum,GLfloat *);
99
98
  static VALUE gl_PointParameterfvEXT(VALUE obj,VALUE arg1,VALUE arg2)
100
99
  {
101
100
  GLfloat params[3] = {(GLfloat)0.0,(GLfloat)0.0,(GLfloat)0.0};
102
101
  GLenum pname;
103
102
  GLint size;
103
+ DECL_GL_FUNC_PTR(GLvoid,glPointParameterfvEXT,(GLenum,GLfloat *));
104
104
  LOAD_GL_FUNC(glPointParameterfvEXT, "GL_EXT_point_parameters");
105
105
  pname = NUM2UINT(arg1);
106
106
  Check_Type(arg2,T_ARRAY);
@@ -125,10 +125,10 @@ GL_FUNC_LOAD_3(SecondaryColor3usEXT,GLvoid, GLushort,GLushort,GLushort, "GL_EXT_
125
125
  GL_FUNC_LOAD_3(SecondaryColor3uiEXT,GLvoid, GLuint,GLuint,GLuint, "GL_EXT_secondary_color")
126
126
 
127
127
  #define GLSECONDARYCOLOREXT_VFUNC(_name_,_type_,_conv_) \
128
- static void (APIENTRY * fptr_gl##_name_)(_type_ *); \
129
128
  VALUE gl_##_name_(VALUE obj,VALUE arg1) \
130
129
  { \
131
130
  _type_ cary[3] = {0,0,0}; \
131
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(_type_ *)); \
132
132
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_secondary_color"); \
133
133
  Check_Type(arg1,T_ARRAY); \
134
134
  _conv_(arg1,cary,3); \
@@ -147,8 +147,6 @@ GLSECONDARYCOLOREXT_VFUNC(SecondaryColor3ubvEXT,GLubyte,ary2cubyte)
147
147
  GLSECONDARYCOLOREXT_VFUNC(SecondaryColor3usvEXT,GLushort,ary2cushort)
148
148
  #undef GLSECONDARYCOLOREXT_VFUNC
149
149
 
150
- extern VALUE g_SecondaryColor_ptr;
151
- static void (APIENTRY * fptr_glSecondaryColorPointerEXT)(GLint,GLenum,GLsizei,const GLvoid *);
152
150
  static VALUE
153
151
  gl_SecondaryColorPointerEXT(obj,arg1,arg2,arg3,arg4)
154
152
  VALUE obj,arg1,arg2,arg3,arg4;
@@ -156,18 +154,19 @@ VALUE obj,arg1,arg2,arg3,arg4;
156
154
  GLint size;
157
155
  GLenum type;
158
156
  GLsizei stride;
157
+ DECL_GL_FUNC_PTR(GLvoid,glSecondaryColorPointerEXT,(GLint,GLenum,GLsizei,const GLvoid *));
159
158
  LOAD_GL_FUNC(glSecondaryColorPointerEXT, "GL_EXT_secondary_color");
160
159
  size = (GLint)NUM2INT(arg1);
161
160
  type = (GLenum)NUM2INT(arg2);
162
161
  stride = (GLsizei)NUM2UINT(arg3);
163
- if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
164
- g_SecondaryColor_ptr = arg4;
162
+ if (CHECK_BUFFER_BINDING(GL_ARRAY_BUFFER_BINDING)) {
163
+ SET_GLIMPL_VARIABLE(SecondaryColor_ptr, arg4);
165
164
  fptr_glSecondaryColorPointerEXT(size,type, stride, (const GLvoid*)NUM2SIZET(arg4));
166
165
  } else {
167
166
  VALUE data;
168
167
  data = pack_array_or_pass_string(type,arg4);
169
168
  rb_str_freeze(data);
170
- g_SecondaryColor_ptr = data;
169
+ SET_GLIMPL_VARIABLE(SecondaryColor_ptr, data);
171
170
  fptr_glSecondaryColorPointerEXT(size,type, stride, (const GLvoid*)RSTRING_PTR(data));
172
171
  }
173
172
  CHECK_GLERROR_FROM("glSecondaryColorPointerEXT");
@@ -179,7 +178,6 @@ GL_FUNC_LOAD_2(LockArraysEXT,GLvoid, GLint,GLint, "GL_EXT_compiled_vertex_array"
179
178
  GL_FUNC_LOAD_0(UnlockArraysEXT,GLvoid, "GL_EXT_compiled_vertex_array")
180
179
 
181
180
  /* #112 - GL_EXT_draw_range_elements */
182
- static void (APIENTRY * fptr_glDrawRangeElementsEXT)(GLenum,GLuint,GLuint,GLsizei,GLenum,GLvoid*);
183
181
  static VALUE
184
182
  gl_DrawRangeElementsEXT(obj,arg1,arg2,arg3,arg4,arg5,arg6)
185
183
  VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
@@ -189,13 +187,14 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
189
187
  GLuint end;
190
188
  GLsizei count;
191
189
  GLenum type;
190
+ DECL_GL_FUNC_PTR(GLvoid,glDrawRangeElementsEXT,(GLenum,GLuint,GLuint,GLsizei,GLenum,GLvoid*));
192
191
  LOAD_GL_FUNC(glDrawRangeElementsEXT, "GL_EXT_draw_range_elements");
193
192
  mode = (GLenum)NUM2INT(arg1);
194
193
  start = (GLuint)NUM2UINT(arg2);
195
194
  end = (GLuint)NUM2UINT(arg3);
196
195
  count = (GLsizei)NUM2UINT(arg4);
197
196
  type = (GLenum)NUM2INT(arg5);
198
- if (CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING)) {
197
+ if (CHECK_BUFFER_BINDING(GL_ELEMENT_ARRAY_BUFFER_BINDING)) {
199
198
  fptr_glDrawRangeElementsEXT(mode, start, end, count, type, (GLvoid *)NUM2SIZET(arg6));
200
199
  } else {
201
200
  VALUE data;
@@ -207,7 +206,6 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
207
206
  }
208
207
 
209
208
  /* #148 - GL_EXT_multi_draw_arrays */
210
- static void (APIENTRY * fptr_glMultiDrawArraysEXT)(GLenum,GLint*,GLsizei*,GLsizei);
211
209
  static VALUE
212
210
  gl_MultiDrawArraysEXT(obj,arg1,arg2,arg3)
213
211
  VALUE obj,arg1,arg2,arg3;
@@ -216,6 +214,7 @@ VALUE obj,arg1,arg2,arg3;
216
214
  GLint *ary1;
217
215
  GLsizei *ary2;
218
216
  int len1,len2;
217
+ DECL_GL_FUNC_PTR(GLvoid,glMultiDrawArraysEXT,(GLenum,GLint*,GLsizei*,GLsizei));
219
218
  LOAD_GL_FUNC(glMultiDrawArraysEXT, "GL_EXT_multi_draw_arrays");
220
219
  len1 = (int)RARRAY_LENINT(arg2);
221
220
  len2 = (int)RARRAY_LENINT(arg3);
@@ -233,7 +232,6 @@ VALUE obj,arg1,arg2,arg3;
233
232
  return Qnil;
234
233
  }
235
234
 
236
- static void (APIENTRY * fptr_glMultiDrawElementsEXT)(GLenum,const GLsizei *,GLenum,GLvoid **,GLsizei);
237
235
  static VALUE
238
236
  gl_MultiDrawElementsEXT(argc,argv,obj)
239
237
  int argc;
@@ -247,11 +245,12 @@ VALUE obj;
247
245
  GLint size;
248
246
  int i;
249
247
  VALUE ary, args[4];
248
+ DECL_GL_FUNC_PTR(GLvoid,glMultiDrawElementsEXT,(GLenum,const GLsizei *,GLenum,GLvoid **,GLsizei));
250
249
  LOAD_GL_FUNC(glMultiDrawElementsEXT, "GL_EXT_multi_draw_arrays");
251
250
  switch (rb_scan_args(argc, argv, "31", &args[0], &args[1], &args[2],&args[3])) {
252
251
  default:
253
252
  case 3:
254
- if (CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING))
253
+ if (CHECK_BUFFER_BINDING(GL_ELEMENT_ARRAY_BUFFER_BINDING))
255
254
  rb_raise(rb_eArgError, "Element array buffer bound, but offsets array missing");
256
255
  mode = (GLenum)NUM2INT(args[0]);
257
256
  type = (GLenum)NUM2INT(args[1]);
@@ -272,7 +271,7 @@ VALUE obj;
272
271
  xfree(indices);
273
272
  break;
274
273
  case 4:
275
- if (!CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING))
274
+ if (!CHECK_BUFFER_BINDING(GL_ELEMENT_ARRAY_BUFFER_BINDING))
276
275
  rb_raise(rb_eArgError, "Element array buffer not bound");
277
276
  mode = (GLenum)NUM2INT(args[0]);
278
277
  type = (GLenum)NUM2INT(args[1]);
@@ -303,10 +302,10 @@ GL_FUNC_LOAD_1(FogCoordfEXT,GLvoid, GLfloat, "GL_EXT_fog_coord")
303
302
  GL_FUNC_LOAD_1(FogCoorddEXT,GLvoid, GLdouble, "GL_EXT_fog_coord")
304
303
 
305
304
  #define GLFOGCOORD_VFUNC(_name_,_type_,_conv_) \
306
- static void (APIENTRY * fptr_gl##_name_)(_type_ *); \
307
305
  VALUE gl_##_name_(VALUE obj,VALUE arg1) \
308
306
  { \
309
307
  _type_ cary = 0; \
308
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(_type_ *)); \
310
309
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_secondary_color"); \
311
310
  Check_Type(arg1,T_ARRAY); \
312
311
  _conv_(arg1,&cary,1); \
@@ -318,25 +317,24 @@ GLFOGCOORD_VFUNC(FogCoordfvEXT,GLfloat,ary2cflt)
318
317
  GLFOGCOORD_VFUNC(FogCoorddvEXT,GLdouble,ary2cdbl)
319
318
  #undef GLFOGCOORD_VFUNC
320
319
 
321
- extern VALUE g_FogCoord_ptr;
322
- static void (APIENTRY * fptr_glFogCoordPointerEXT)(GLenum,GLsizei,const GLvoid *);
323
320
  static VALUE
324
321
  gl_FogCoordPointerEXT(obj,arg1,arg2,arg3)
325
322
  VALUE obj,arg1,arg2,arg3;
326
323
  {
327
324
  GLenum type;
328
325
  GLsizei stride;
326
+ DECL_GL_FUNC_PTR(GLvoid,glFogCoordPointerEXT,(GLenum,GLsizei,const GLvoid *));
329
327
  LOAD_GL_FUNC(glFogCoordPointerEXT, "GL_EXT_secondary_color");
330
328
  type = (GLenum)NUM2INT(arg1);
331
329
  stride = (GLsizei)NUM2UINT(arg2);
332
- if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
333
- g_FogCoord_ptr = arg3;
330
+ if (CHECK_BUFFER_BINDING(GL_ARRAY_BUFFER_BINDING)) {
331
+ SET_GLIMPL_VARIABLE(FogCoord_ptr, arg3);
334
332
  fptr_glFogCoordPointerEXT(type, stride, (const GLvoid*)NUM2SIZET(arg3));
335
333
  } else {
336
334
  VALUE data;
337
335
  data = pack_array_or_pass_string(type,arg3);
338
336
  rb_str_freeze(data);
339
- g_FogCoord_ptr = data;
337
+ SET_GLIMPL_VARIABLE(FogCoord_ptr, data);
340
338
  fptr_glFogCoordPointerEXT(type, stride, (const GLvoid*)RSTRING_PTR(data));
341
339
  }
342
340
  CHECK_GLERROR_FROM("glFogCoordPointerEXT");
@@ -362,10 +360,10 @@ GL_FUNC_LOAD_4(RenderbufferStorageEXT,GLvoid, GLenum,GLenum,GLsizei,GLsizei, "GL
362
360
  GL_FUNC_GENOBJECTS_LOAD(GenRenderbuffersEXT,"GL_EXT_framebuffer_object")
363
361
  GL_FUNC_DELETEOBJECTS_LOAD(DeleteRenderbuffersEXT,"GL_EXT_framebuffer_object")
364
362
 
365
- static void (APIENTRY * fptr_glGetRenderbufferParameterivEXT)(GLenum,GLenum,GLint *);
366
363
  static VALUE gl_GetRenderbufferParameterivEXT(VALUE obj,VALUE arg1,VALUE arg2)
367
364
  {
368
365
  GLint param = 0;
366
+ DECL_GL_FUNC_PTR(GLvoid,glGetRenderbufferParameterivEXT,(GLenum,GLenum,GLint *));
369
367
  LOAD_GL_FUNC(glGetRenderbufferParameterivEXT, "GL_EXT_framebuffer_object");
370
368
  fptr_glGetRenderbufferParameterivEXT(NUM2UINT(arg1),NUM2UINT(arg2),&param);
371
369
  CHECK_GLERROR_FROM("glGetRenderbufferParameterivEXT");
@@ -383,10 +381,10 @@ GL_FUNC_LOAD_6(FramebufferTexture3DEXT,GLvoid, GLenum,GLenum,GLenum,GLuint,GLint
383
381
 
384
382
  GL_FUNC_LOAD_4(FramebufferRenderbufferEXT,GLvoid, GLuint,GLuint,GLuint,GLuint, "GL_EXT_framebuffer_object")
385
383
 
386
- static void (APIENTRY * fptr_glGetFramebufferAttachmentParameterivEXT)(GLenum,GLenum,GLenum,GLint *);
387
384
  static VALUE gl_GetFramebufferAttachmentParameterivEXT(VALUE obj,VALUE arg1, VALUE arg2, VALUE arg3)
388
385
  {
389
386
  GLint ret = 0;
387
+ DECL_GL_FUNC_PTR(GLvoid,glGetFramebufferAttachmentParameterivEXT,(GLenum,GLenum,GLenum,GLint *));
390
388
  LOAD_GL_FUNC(glGetFramebufferAttachmentParameterivEXT, "GL_EXT_framebuffer_object");
391
389
  fptr_glGetFramebufferAttachmentParameterivEXT(NUM2UINT(arg1),NUM2UINT(arg2),NUM2UINT(arg3),&ret);
392
390
  CHECK_GLERROR_FROM("glGetFramebufferAttachmentParameterivEXT");
@@ -407,30 +405,30 @@ GL_FUNC_LOAD_5(RenderbufferStorageMultisampleEXT,GLvoid, GLenum,GLsizei,GLenum,G
407
405
  /* #319 - GL_EXT_timer_query */
408
406
 
409
407
  #define GETQUERY_FUNC(_name_,_type_,_conv_) \
410
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLenum,_type_ *); \
411
408
  static VALUE gl_##_name_(VALUE obj,VALUE arg1,VALUE arg2) \
412
409
  { \
413
410
  _type_ ret = 0; \
411
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLenum,_type_ *)); \
414
412
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_timer_query"); \
415
413
  fptr_gl##_name_(NUM2INT(arg1),NUM2INT(arg2),&ret); \
416
414
  CHECK_GLERROR_FROM("gl" #_name_); \
417
415
  return _conv_(NUM2INT(arg2),ret); \
418
416
  }
419
417
 
420
- GETQUERY_FUNC(GetQueryObjecti64vEXT,GLint64EXT,cond_GLBOOL2RUBY_LL)
421
- GETQUERY_FUNC(GetQueryObjectui64vEXT,GLuint64EXT,cond_GLBOOL2RUBY_ULL)
418
+ GETQUERY_FUNC(GetQueryObjecti64vEXT,GLint64,cond_GLBOOL2RUBY_LL)
419
+ GETQUERY_FUNC(GetQueryObjectui64vEXT,GLuint64,cond_GLBOOL2RUBY_ULL)
422
420
  #undef GETQUERY_FUNC
423
421
 
424
422
 
425
423
  /* #320 - GL_EXT_gpu_program_parameters */
426
424
  #define PROGRAMPARAM_MULTI_FUNC_V(_name_,_type_,_conv_,_extension_) \
427
- static void (APIENTRY * fptr_gl##_name_)(GLenum,GLuint,GLsizei,const _type_ *); \
428
425
  static VALUE \
429
426
  gl_##_name_(obj,arg1,arg2,arg3) \
430
427
  VALUE obj,arg1,arg2,arg3; \
431
428
  { \
432
429
  _type_ *cary; \
433
430
  GLsizei len; \
431
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLenum,GLuint,GLsizei,const _type_ *)); \
434
432
  LOAD_GL_FUNC(gl##_name_, _extension_); \
435
433
  len = (GLsizei)RARRAY_LENINT(rb_Array(arg3)); \
436
434
  if (len<=0 || (len % 4) != 0) \
@@ -461,12 +459,12 @@ GL_FUNC_LOAD_4(VertexAttribI3uiEXT,GLvoid, GLuint,GLuint,GLuint,GLuint, "GL_EXT_
461
459
  GL_FUNC_LOAD_5(VertexAttribI4uiEXT,GLvoid, GLuint,GLuint,GLuint,GLuint,GLuint, "GL_EXT_gpu_shader4")
462
460
 
463
461
  #define GLVERTEXATTRIB_VFUNC(_name_,_type_,_conv_,_size_) \
464
- static void (APIENTRY * fptr_gl##_name_)(GLuint,const _type_ *); \
465
462
  static VALUE \
466
463
  gl_##_name_(obj,arg1,arg2) \
467
464
  VALUE obj,arg1,arg2; \
468
465
  { \
469
466
  _type_ value[_size_]; \
467
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,const _type_ *)); \
470
468
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_gpu_shader4"); \
471
469
  _conv_(arg2,value,_size_); \
472
470
  fptr_gl##_name_(NUM2UINT(arg1),value); \
@@ -489,7 +487,6 @@ GLVERTEXATTRIB_VFUNC(VertexAttribI4usvEXT,GLushort,ary2cushort,4)
489
487
  #undef GLVERTEXATTRIB_VFUNC
490
488
 
491
489
  #define GETVERTEXATTRIB_FUNC(_name_,_type_,_conv_,_extension_) \
492
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLenum,_type_ *); \
493
490
  static VALUE \
494
491
  gl_##_name_(obj,arg1,arg2) \
495
492
  VALUE obj,arg1,arg2; \
@@ -498,6 +495,7 @@ VALUE obj,arg1,arg2; \
498
495
  GLenum pname; \
499
496
  _type_ params[4] = {0,0,0,0}; \
500
497
  GLint size; \
498
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLenum,_type_ *)); \
501
499
  LOAD_GL_FUNC(gl##_name_, _extension_); \
502
500
  index = (GLuint)NUM2UINT(arg1); \
503
501
  pname = (GLenum)NUM2INT(arg2); \
@@ -513,9 +511,6 @@ GETVERTEXATTRIB_FUNC(GetVertexAttribIivEXT,GLint,cond_GLBOOL2RUBY,"GL_EXT_gpu_sh
513
511
  GETVERTEXATTRIB_FUNC(GetVertexAttribIuivEXT,GLuint,cond_GLBOOL2RUBY_U,"GL_EXT_gpu_shader4")
514
512
  #undef GETVERTEXATTRIB_FUNC
515
513
 
516
- extern VALUE g_VertexAttrib_ptr[];
517
-
518
- static void (APIENTRY * fptr_glVertexAttribIPointerEXT)(GLuint,GLint,GLenum,GLsizei,const GLvoid *);
519
514
  static VALUE gl_VertexAttribIPointerEXT(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3,VALUE arg4,VALUE arg5)
520
515
  {
521
516
  GLuint index;
@@ -523,6 +518,7 @@ static VALUE gl_VertexAttribIPointerEXT(VALUE obj,VALUE arg1,VALUE arg2,VALUE ar
523
518
  GLenum type;
524
519
  GLsizei stride;
525
520
 
521
+ DECL_GL_FUNC_PTR(GLvoid,glVertexAttribIPointerEXT,(GLuint,GLint,GLenum,GLsizei,const GLvoid *));
526
522
  LOAD_GL_FUNC(glVertexAttribIPointerEXT, "GL_EXT_gpu_shader4");
527
523
 
528
524
  index = (GLuint)NUM2UINT(arg1);
@@ -532,14 +528,14 @@ static VALUE gl_VertexAttribIPointerEXT(VALUE obj,VALUE arg1,VALUE arg2,VALUE ar
532
528
  if (index>_MAX_VERTEX_ATTRIBS)
533
529
  rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);
534
530
 
535
- if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
536
- g_VertexAttrib_ptr[index] = arg5;
531
+ if (CHECK_BUFFER_BINDING(GL_ARRAY_BUFFER_BINDING)) {
532
+ SET_GLIMPL_VARIABLE(VertexAttrib_ptr[index], arg5);
537
533
  fptr_glVertexAttribIPointerEXT(index,size,type,stride,(GLvoid *)NUM2SIZET(arg5));
538
534
  } else {
539
535
  VALUE data;
540
536
  data = pack_array_or_pass_string(type,arg5);
541
537
  rb_str_freeze(data);
542
- g_VertexAttrib_ptr[index] = data;
538
+ SET_GLIMPL_VARIABLE(VertexAttrib_ptr[index], data);
543
539
  fptr_glVertexAttribIPointerEXT(index,size,type,stride,(GLvoid *)RSTRING_PTR(data));
544
540
  }
545
541
 
@@ -553,7 +549,6 @@ GL_FUNC_LOAD_4(Uniform3uiEXT,GLvoid, GLint,GLuint,GLuint,GLuint, "GL_EXT_gpu_sha
553
549
  GL_FUNC_LOAD_5(Uniform4uiEXT,GLvoid, GLint,GLuint,GLuint,GLuint,GLuint, "GL_EXT_gpu_shader4")
554
550
 
555
551
  #define GLUNIFORM_VFUNC(_name_,_type_,_conv_,_size_) \
556
- static void (APIENTRY * fptr_gl##_name_)(GLint,GLsizei,const _type_ *); \
557
552
  static VALUE \
558
553
  gl_##_name_(obj,arg1,arg2) \
559
554
  VALUE obj,arg1,arg2; \
@@ -561,6 +556,7 @@ VALUE obj,arg1,arg2; \
561
556
  GLint location; \
562
557
  GLsizei count; \
563
558
  _type_ *value; \
559
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLint,GLsizei,const _type_ *)); \
564
560
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_gpu_shader4"); \
565
561
  Check_Type(arg2,T_ARRAY); \
566
562
  count = (GLsizei)RARRAY_LENINT(arg2); \
@@ -581,9 +577,7 @@ GLUNIFORM_VFUNC(Uniform3uivEXT,GLuint,ary2cuint,3)
581
577
  GLUNIFORM_VFUNC(Uniform4uivEXT,GLuint,ary2cuint,4)
582
578
  #undef GLUNIFORM_VFUNC
583
579
 
584
- static void (APIENTRY * fptr_glGetActiveUniformARB)(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*);
585
580
  #define GETUNIFORM_FUNC(_name_,_type_) \
586
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLint,_type_ *); \
587
581
  static VALUE \
588
582
  gl_##_name_(obj,arg1,arg2) \
589
583
  VALUE obj,arg1,arg2; \
@@ -595,6 +589,8 @@ VALUE obj,arg1,arg2; \
595
589
  GLenum uniform_type = 0; \
596
590
  GLint uniform_size = 0; \
597
591
  \
592
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLint,_type_ *)); \
593
+ DECL_GL_FUNC_PTR(GLvoid,glGetActiveUniformARB,(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*)); \
598
594
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_gpu_shader4"); \
599
595
  LOAD_GL_FUNC(glGetActiveUniformARB, "GL_ARB_shader_objects"); \
600
596
  program = (GLuint)NUM2UINT(arg1); \
@@ -615,9 +611,9 @@ VALUE obj,arg1,arg2; \
615
611
  GETUNIFORM_FUNC(GetUniformuivEXT,GLuint)
616
612
  #undef GETUNIFORM_FUNC
617
613
 
618
- static void (APIENTRY * fptr_glBindFragDataLocationEXT)(GLuint,GLuint,const GLchar *);
619
614
  static VALUE gl_BindFragDataLocationEXT(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
620
615
  {
616
+ DECL_GL_FUNC_PTR(GLvoid,glBindFragDataLocationEXT,(GLuint,GLuint,const GLchar *));
621
617
  LOAD_GL_FUNC(glBindFragDataLocationEXT, "GL_EXT_gpu_shader4");
622
618
  Check_Type(arg3,T_STRING);
623
619
  fptr_glBindFragDataLocationEXT(NUM2UINT(arg1),NUM2UINT(arg2),RSTRING_PTR(arg3));
@@ -625,10 +621,10 @@ static VALUE gl_BindFragDataLocationEXT(VALUE obj,VALUE arg1,VALUE arg2,VALUE ar
625
621
  return Qnil;
626
622
  }
627
623
 
628
- static GLint (APIENTRY * fptr_glGetFragDataLocationEXT)(GLuint,const GLchar *);
629
624
  static VALUE gl_GetFragDataLocationEXT(VALUE obj,VALUE arg1,VALUE arg2)
630
625
  {
631
626
  GLint ret;
627
+ DECL_GL_FUNC_PTR(GLint,glGetFragDataLocationEXT,(GLuint,const GLchar *));
632
628
  LOAD_GL_FUNC(glGetFragDataLocationEXT, "GL_EXT_gpu_shader4");
633
629
  Check_Type(arg2,T_STRING);
634
630
  ret = fptr_glGetFragDataLocationEXT(NUM2UINT(arg1),RSTRING_PTR(arg2));
@@ -639,7 +635,6 @@ static VALUE gl_GetFragDataLocationEXT(VALUE obj,VALUE arg1,VALUE arg2)
639
635
  /* #327 - GL_EXT_draw_instanced */
640
636
  GL_FUNC_LOAD_4(DrawArraysInstancedEXT,GLvoid, GLenum,GLint,GLsizei,GLsizei, "GL_EXT_draw_instanced")
641
637
 
642
- static void (APIENTRY * fptr_glDrawElementsInstancedEXT)(GLenum,GLsizei,GLenum,const GLvoid *,GLsizei);
643
638
  static VALUE gl_DrawElementsInstancedEXT(obj,arg1,arg2,arg3,arg4,arg5)
644
639
  VALUE obj,arg1,arg2,arg3,arg4,arg5;
645
640
  {
@@ -647,12 +642,13 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5;
647
642
  GLsizei count;
648
643
  GLenum type;
649
644
  GLsizei primcount;
645
+ DECL_GL_FUNC_PTR(GLvoid,glDrawElementsInstancedEXT,(GLenum,GLsizei,GLenum,const GLvoid *,GLsizei));
650
646
  LOAD_GL_FUNC(glDrawElementsInstancedEXT, "GL_EXT_draw_instanced");
651
647
  mode = (GLenum)NUM2INT(arg1);
652
648
  count = (GLsizei)NUM2UINT(arg2);
653
649
  type = (GLenum)NUM2INT(arg3);
654
650
  primcount = (GLsizei)NUM2INT(arg5);
655
- if (CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING)) {
651
+ if (CHECK_BUFFER_BINDING(GL_ELEMENT_ARRAY_BUFFER_BINDING)) {
656
652
  fptr_glDrawElementsInstancedEXT(mode, count, type, (const GLvoid*)NUM2SIZET(arg4), primcount);
657
653
  } else {
658
654
  VALUE data;
@@ -671,7 +667,6 @@ GL_FUNC_LOAD_4(ClearColorIiEXT,GLvoid, GLint,GLint,GLint,GLint, "GL_EXT_texture_
671
667
  GL_FUNC_LOAD_4(ClearColorIuiEXT,GLvoid, GLuint,GLuint,GLuint,GLuint, "GL_EXT_texture_integer")
672
668
 
673
669
  #define TEXPARAMETER_VFUNC(_name_,_type_,_conv_) \
674
- static void (APIENTRY * fptr_gl##_name_)(GLenum,GLenum,_type_ *); \
675
670
  static VALUE \
676
671
  gl_##_name_(obj,arg1,arg2,arg3) \
677
672
  VALUE obj,arg1,arg2,arg3; \
@@ -679,6 +674,7 @@ VALUE obj,arg1,arg2,arg3; \
679
674
  GLenum target; \
680
675
  GLenum pname; \
681
676
  _type_ params[4] = {0,0,0,0}; \
677
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLenum,GLenum,_type_ *)); \
682
678
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_texture_integer"); \
683
679
  target = (GLenum)NUM2UINT(arg1); \
684
680
  pname = (GLenum)NUM2UINT(arg2); \
@@ -694,7 +690,6 @@ TEXPARAMETER_VFUNC(TexParameterIuivEXT,GLuint,ary2cuint)
694
690
  #undef TEXPARAMETER_VFUNC
695
691
 
696
692
  #define GETTEXPARAMETER_VFUNC(_name_,_type_,_conv_) \
697
- static void (APIENTRY * fptr_gl##_name_)(GLenum,GLenum,_type_ *); \
698
693
  static VALUE \
699
694
  gl_##_name_(obj,arg1,arg2) \
700
695
  VALUE obj,arg1,arg2; \
@@ -703,6 +698,7 @@ VALUE obj,arg1,arg2; \
703
698
  GLenum pname; \
704
699
  _type_ params[4] = {0,0,0,0}; \
705
700
  int size; \
701
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLenum,GLenum,_type_ *)); \
706
702
  LOAD_GL_FUNC(gl##_name_, "GL_EXT_texture_integer"); \
707
703
  target = (GLenum)NUM2INT(arg1); \
708
704
  pname = (GLenum)NUM2INT(arg2); \
@@ -725,165 +721,165 @@ GETTEXPARAMETER_VFUNC(GetTexParameterIivEXT,GLint,cond_GLBOOL2RUBY)
725
721
  GETTEXPARAMETER_VFUNC(GetTexParameterIuivEXT,GLuint,cond_GLBOOL2RUBY_U)
726
722
  #undef GETTEXPARAMETER_VFUNC
727
723
 
728
- void gl_init_functions_ext_ext(VALUE module)
724
+ void gl_init_functions_ext_ext(VALUE klass)
729
725
  {
730
726
  /* #2 - GL_EXT_blend_color */
731
- rb_define_module_function(module, "glBlendColorEXT", gl_BlendColorEXT, 4);
727
+ rb_define_method(klass, "glBlendColorEXT", gl_BlendColorEXT, 4);
732
728
 
733
729
  /* #3 - GL_EXT_polygon_offset */
734
- rb_define_module_function(module, "glPolygonOffsetEXT", gl_PolygonOffsetEXT, 2);
730
+ rb_define_method(klass, "glPolygonOffsetEXT", gl_PolygonOffsetEXT, 2);
735
731
 
736
732
  /* #20 - GL_EXT_texture_object */
737
- rb_define_module_function(module, "glGenTexturesEXT", gl_GenTexturesEXT, 1);
738
- rb_define_module_function(module, "glDeleteTexturesEXT", gl_DeleteTexturesEXT, 1);
739
- rb_define_module_function(module, "glBindTextureEXT", gl_BindTextureEXT, 2);
740
- rb_define_module_function(module, "glPrioritizeTexturesEXT", gl_PrioritizeTexturesEXT, 2);
741
- rb_define_module_function(module, "glAreTexturesResidentEXT", gl_AreTexturesResidentEXT, 1);
742
- rb_define_module_function(module, "glIsTextureEXT", gl_IsTextureEXT, 1);
733
+ rb_define_method(klass, "glGenTexturesEXT", gl_GenTexturesEXT, 1);
734
+ rb_define_method(klass, "glDeleteTexturesEXT", gl_DeleteTexturesEXT, 1);
735
+ rb_define_method(klass, "glBindTextureEXT", gl_BindTextureEXT, 2);
736
+ rb_define_method(klass, "glPrioritizeTexturesEXT", gl_PrioritizeTexturesEXT, 2);
737
+ rb_define_method(klass, "glAreTexturesResidentEXT", gl_AreTexturesResidentEXT, 1);
738
+ rb_define_method(klass, "glIsTextureEXT", gl_IsTextureEXT, 1);
743
739
 
744
740
  /* #37 - GL_EXT_blend_minmax */
745
- rb_define_module_function(module, "glBlendEquationEXT", gl_BlendEquationEXT, 1);
741
+ rb_define_method(klass, "glBlendEquationEXT", gl_BlendEquationEXT, 1);
746
742
 
747
743
  /* #54 - GL_EXT_point_parameters */
748
- rb_define_module_function(module, "glPointParameterfEXT", gl_PointParameterfEXT, 2);
749
- rb_define_module_function(module, "glPointParameterfvEXT", gl_PointParameterfvEXT, 2);
744
+ rb_define_method(klass, "glPointParameterfEXT", gl_PointParameterfEXT, 2);
745
+ rb_define_method(klass, "glPointParameterfvEXT", gl_PointParameterfvEXT, 2);
750
746
 
751
747
  /* #97 - GL_EXT_compiled_vertex_array */
752
- rb_define_module_function(module, "glLockArraysEXT", gl_LockArraysEXT, 2);
753
- rb_define_module_function(module, "glUnlockArraysEXT", gl_UnlockArraysEXT, 0);
748
+ rb_define_method(klass, "glLockArraysEXT", gl_LockArraysEXT, 2);
749
+ rb_define_method(klass, "glUnlockArraysEXT", gl_UnlockArraysEXT, 0);
754
750
 
755
751
  /* #112 - GL_EXT_draw_range_elements */
756
- rb_define_module_function(module, "glDrawRangeElementsEXT", gl_DrawRangeElementsEXT, 6);
752
+ rb_define_method(klass, "glDrawRangeElementsEXT", gl_DrawRangeElementsEXT, 6);
757
753
 
758
754
  /* #145 - GL_EXT_secondary_color */
759
- rb_define_module_function(module, "glSecondaryColor3bEXT", gl_SecondaryColor3bEXT, 3);
760
- rb_define_module_function(module, "glSecondaryColor3dEXT", gl_SecondaryColor3dEXT, 3);
761
- rb_define_module_function(module, "glSecondaryColor3fEXT", gl_SecondaryColor3fEXT, 3);
762
- rb_define_module_function(module, "glSecondaryColor3iEXT", gl_SecondaryColor3iEXT, 3);
763
- rb_define_module_function(module, "glSecondaryColor3sEXT", gl_SecondaryColor3sEXT, 3);
764
- rb_define_module_function(module, "glSecondaryColor3ubEXT", gl_SecondaryColor3ubEXT, 3);
765
- rb_define_module_function(module, "glSecondaryColor3uiEXT", gl_SecondaryColor3uiEXT, 3);
766
- rb_define_module_function(module, "glSecondaryColor3usEXT", gl_SecondaryColor3usEXT, 3);
767
- rb_define_module_function(module, "glSecondaryColor3bvEXT", gl_SecondaryColor3bvEXT, 1);
768
- rb_define_module_function(module, "glSecondaryColor3dvEXT", gl_SecondaryColor3dvEXT, 1);
769
- rb_define_module_function(module, "glSecondaryColor3fvEXT", gl_SecondaryColor3fvEXT, 1);
770
- rb_define_module_function(module, "glSecondaryColor3ivEXT", gl_SecondaryColor3ivEXT, 1);
771
- rb_define_module_function(module, "glSecondaryColor3svEXT", gl_SecondaryColor3svEXT, 1);
772
- rb_define_module_function(module, "glSecondaryColor3ubvEXT", gl_SecondaryColor3ubvEXT, 1);
773
- rb_define_module_function(module, "glSecondaryColor3uivEXT", gl_SecondaryColor3uivEXT, 1);
774
- rb_define_module_function(module, "glSecondaryColor3usvEXT", gl_SecondaryColor3usvEXT, 1);
775
- rb_define_module_function(module, "glSecondaryColorPointerEXT", gl_SecondaryColorPointerEXT, 4);
755
+ rb_define_method(klass, "glSecondaryColor3bEXT", gl_SecondaryColor3bEXT, 3);
756
+ rb_define_method(klass, "glSecondaryColor3dEXT", gl_SecondaryColor3dEXT, 3);
757
+ rb_define_method(klass, "glSecondaryColor3fEXT", gl_SecondaryColor3fEXT, 3);
758
+ rb_define_method(klass, "glSecondaryColor3iEXT", gl_SecondaryColor3iEXT, 3);
759
+ rb_define_method(klass, "glSecondaryColor3sEXT", gl_SecondaryColor3sEXT, 3);
760
+ rb_define_method(klass, "glSecondaryColor3ubEXT", gl_SecondaryColor3ubEXT, 3);
761
+ rb_define_method(klass, "glSecondaryColor3uiEXT", gl_SecondaryColor3uiEXT, 3);
762
+ rb_define_method(klass, "glSecondaryColor3usEXT", gl_SecondaryColor3usEXT, 3);
763
+ rb_define_method(klass, "glSecondaryColor3bvEXT", gl_SecondaryColor3bvEXT, 1);
764
+ rb_define_method(klass, "glSecondaryColor3dvEXT", gl_SecondaryColor3dvEXT, 1);
765
+ rb_define_method(klass, "glSecondaryColor3fvEXT", gl_SecondaryColor3fvEXT, 1);
766
+ rb_define_method(klass, "glSecondaryColor3ivEXT", gl_SecondaryColor3ivEXT, 1);
767
+ rb_define_method(klass, "glSecondaryColor3svEXT", gl_SecondaryColor3svEXT, 1);
768
+ rb_define_method(klass, "glSecondaryColor3ubvEXT", gl_SecondaryColor3ubvEXT, 1);
769
+ rb_define_method(klass, "glSecondaryColor3uivEXT", gl_SecondaryColor3uivEXT, 1);
770
+ rb_define_method(klass, "glSecondaryColor3usvEXT", gl_SecondaryColor3usvEXT, 1);
771
+ rb_define_method(klass, "glSecondaryColorPointerEXT", gl_SecondaryColorPointerEXT, 4);
776
772
 
777
773
  /* #148 - GL_EXT_multi_draw_arrays */
778
- rb_define_module_function(module, "glMultiDrawArraysEXT", gl_MultiDrawArraysEXT, 3);
779
- rb_define_module_function(module, "glMultiDrawElementsEXT", gl_MultiDrawElementsEXT, -1);
774
+ rb_define_method(klass, "glMultiDrawArraysEXT", gl_MultiDrawArraysEXT, 3);
775
+ rb_define_method(klass, "glMultiDrawElementsEXT", gl_MultiDrawElementsEXT, -1);
780
776
 
781
777
  /* #149 - GL_EXT_fog_coord */
782
- rb_define_module_function(module, "glFogCoordfEXT", gl_FogCoordfEXT, 1);
783
- rb_define_module_function(module, "glFogCoorddEXT", gl_FogCoorddEXT, 1);
784
- rb_define_module_function(module, "glFogCoordfvEXT", gl_FogCoordfvEXT, 1);
785
- rb_define_module_function(module, "glFogCoorddvEXT", gl_FogCoorddvEXT, 1);
786
- rb_define_module_function(module, "glFogCoordPointerEXT", gl_FogCoordPointerEXT, 3);
778
+ rb_define_method(klass, "glFogCoordfEXT", gl_FogCoordfEXT, 1);
779
+ rb_define_method(klass, "glFogCoorddEXT", gl_FogCoorddEXT, 1);
780
+ rb_define_method(klass, "glFogCoordfvEXT", gl_FogCoordfvEXT, 1);
781
+ rb_define_method(klass, "glFogCoorddvEXT", gl_FogCoorddvEXT, 1);
782
+ rb_define_method(klass, "glFogCoordPointerEXT", gl_FogCoordPointerEXT, 3);
787
783
 
788
784
  /* #173 - GL_EXT_blend_func_separate */
789
- rb_define_module_function(module, "glBlendFuncSeparateEXT", gl_BlendFuncSeparateEXT, 4);
785
+ rb_define_method(klass, "glBlendFuncSeparateEXT", gl_BlendFuncSeparateEXT, 4);
790
786
 
791
787
  /* #268 - GL_EXT_stencil_two_side */
792
- rb_define_module_function(module, "glActiveStencilFaceEXT", gl_ActiveStencilFaceEXT, 1);
788
+ rb_define_method(klass, "glActiveStencilFaceEXT", gl_ActiveStencilFaceEXT, 1);
793
789
 
794
790
  /* #297 - GL_EXT_depth_bounds_test */
795
- rb_define_module_function(module, "glDepthBoundsEXT", gl_DepthBoundsEXT, 2);
791
+ rb_define_method(klass, "glDepthBoundsEXT", gl_DepthBoundsEXT, 2);
796
792
 
797
793
  /* #299 - GL_EXT_blend_equation_separate */
798
- rb_define_module_function(module, "glBlendEquationSeparateEXT", gl_BlendEquationSeparateEXT, 2);
794
+ rb_define_method(klass, "glBlendEquationSeparateEXT", gl_BlendEquationSeparateEXT, 2);
799
795
 
800
796
  /* #310 - GL_EXT_framebuffer_object */
801
- rb_define_module_function(module, "glIsRenderbufferEXT", gl_IsRenderbufferEXT, 1);
802
- rb_define_module_function(module, "glBindRenderbufferEXT", gl_BindRenderbufferEXT, 2);
803
- rb_define_module_function(module, "glDeleteRenderbuffersEXT", gl_DeleteRenderbuffersEXT, 1);
804
- rb_define_module_function(module, "glGenRenderbuffersEXT", gl_GenRenderbuffersEXT, 1);
805
- rb_define_module_function(module, "glRenderbufferStorageEXT", gl_RenderbufferStorageEXT, 4);
806
- rb_define_module_function(module, "glGetRenderbufferParameterivEXT", gl_GetRenderbufferParameterivEXT, 2);
807
- rb_define_module_function(module, "glIsFramebufferEXT", gl_IsFramebufferEXT, 1);
808
- rb_define_module_function(module, "glBindFramebufferEXT", gl_BindFramebufferEXT, 2);
809
- rb_define_module_function(module, "glDeleteFramebuffersEXT", gl_DeleteFramebuffersEXT, 1);
810
- rb_define_module_function(module, "glGenFramebuffersEXT", gl_GenFramebuffersEXT, 1);
811
- rb_define_module_function(module, "glCheckFramebufferStatusEXT", gl_CheckFramebufferStatusEXT, 1);
812
- rb_define_module_function(module, "glFramebufferTexture1DEXT", gl_FramebufferTexture1DEXT, 5);
813
- rb_define_module_function(module, "glFramebufferTexture2DEXT", gl_FramebufferTexture2DEXT, 5);
814
- rb_define_module_function(module, "glFramebufferTexture3DEXT", gl_FramebufferTexture3DEXT, 6);
815
- rb_define_module_function(module, "glFramebufferRenderbufferEXT", gl_FramebufferRenderbufferEXT, 4);
816
- rb_define_module_function(module, "glGetFramebufferAttachmentParameterivEXT", gl_GetFramebufferAttachmentParameterivEXT, 3);
817
- rb_define_module_function(module, "glGenerateMipmapEXT", gl_GenerateMipmapEXT, 1);
797
+ rb_define_method(klass, "glIsRenderbufferEXT", gl_IsRenderbufferEXT, 1);
798
+ rb_define_method(klass, "glBindRenderbufferEXT", gl_BindRenderbufferEXT, 2);
799
+ rb_define_method(klass, "glDeleteRenderbuffersEXT", gl_DeleteRenderbuffersEXT, 1);
800
+ rb_define_method(klass, "glGenRenderbuffersEXT", gl_GenRenderbuffersEXT, 1);
801
+ rb_define_method(klass, "glRenderbufferStorageEXT", gl_RenderbufferStorageEXT, 4);
802
+ rb_define_method(klass, "glGetRenderbufferParameterivEXT", gl_GetRenderbufferParameterivEXT, 2);
803
+ rb_define_method(klass, "glIsFramebufferEXT", gl_IsFramebufferEXT, 1);
804
+ rb_define_method(klass, "glBindFramebufferEXT", gl_BindFramebufferEXT, 2);
805
+ rb_define_method(klass, "glDeleteFramebuffersEXT", gl_DeleteFramebuffersEXT, 1);
806
+ rb_define_method(klass, "glGenFramebuffersEXT", gl_GenFramebuffersEXT, 1);
807
+ rb_define_method(klass, "glCheckFramebufferStatusEXT", gl_CheckFramebufferStatusEXT, 1);
808
+ rb_define_method(klass, "glFramebufferTexture1DEXT", gl_FramebufferTexture1DEXT, 5);
809
+ rb_define_method(klass, "glFramebufferTexture2DEXT", gl_FramebufferTexture2DEXT, 5);
810
+ rb_define_method(klass, "glFramebufferTexture3DEXT", gl_FramebufferTexture3DEXT, 6);
811
+ rb_define_method(klass, "glFramebufferRenderbufferEXT", gl_FramebufferRenderbufferEXT, 4);
812
+ rb_define_method(klass, "glGetFramebufferAttachmentParameterivEXT", gl_GetFramebufferAttachmentParameterivEXT, 3);
813
+ rb_define_method(klass, "glGenerateMipmapEXT", gl_GenerateMipmapEXT, 1);
818
814
 
819
815
  /* #314 - GL_EXT_stencil_clear_tag */
820
- rb_define_module_function(module, "glStencilClearTagEXT", gl_StencilClearTagEXT, 2);
816
+ rb_define_method(klass, "glStencilClearTagEXT", gl_StencilClearTagEXT, 2);
821
817
 
822
818
  /* #316 - GL_EXT_framebuffer_blit */
823
- rb_define_module_function(module, "glBlitFramebufferEXT", gl_BlitFramebufferEXT, 10);
819
+ rb_define_method(klass, "glBlitFramebufferEXT", gl_BlitFramebufferEXT, 10);
824
820
 
825
821
  /* #317 - GL_EXT_framebuffer_multisample */
826
- rb_define_module_function(module, "glRenderbufferStorageMultisampleEXT", gl_RenderbufferStorageMultisampleEXT, 5);
822
+ rb_define_method(klass, "glRenderbufferStorageMultisampleEXT", gl_RenderbufferStorageMultisampleEXT, 5);
827
823
 
828
824
  /* #319 - GL_EXT_timer_query */
829
- rb_define_module_function(module, "glGetQueryObjecti64vEXT", gl_GetQueryObjecti64vEXT, 2);
830
- rb_define_module_function(module, "glGetQueryObjectui64vEXT", gl_GetQueryObjectui64vEXT, 2);
825
+ rb_define_method(klass, "glGetQueryObjecti64vEXT", gl_GetQueryObjecti64vEXT, 2);
826
+ rb_define_method(klass, "glGetQueryObjectui64vEXT", gl_GetQueryObjectui64vEXT, 2);
831
827
 
832
828
  /* #320 - GL_EXT_gpu_program_parameters */
833
- rb_define_module_function(module, "glProgramEnvParameters4fvEXT", gl_ProgramEnvParameters4fvEXT, 3);
834
- rb_define_module_function(module, "glProgramLocalParameters4fvEXT", gl_ProgramLocalParameters4fvEXT, 3);
829
+ rb_define_method(klass, "glProgramEnvParameters4fvEXT", gl_ProgramEnvParameters4fvEXT, 3);
830
+ rb_define_method(klass, "glProgramLocalParameters4fvEXT", gl_ProgramLocalParameters4fvEXT, 3);
835
831
 
836
832
  /* #324 - GL_EXT_geometry_shader4 */
837
- rb_define_module_function(module, "glProgramParameteriEXT", gl_ProgramParameteriEXT, 3);
833
+ rb_define_method(klass, "glProgramParameteriEXT", gl_ProgramParameteriEXT, 3);
838
834
 
839
835
  /* #326 - GL_EXT_gpu_shader4 */
840
- rb_define_module_function(module, "glVertexAttribI1iEXT", gl_VertexAttribI1iEXT, 2);
841
- rb_define_module_function(module, "glVertexAttribI2iEXT", gl_VertexAttribI2iEXT, 3);
842
- rb_define_module_function(module, "glVertexAttribI3iEXT", gl_VertexAttribI3iEXT, 4);
843
- rb_define_module_function(module, "glVertexAttribI4iEXT", gl_VertexAttribI4iEXT, 5);
844
- rb_define_module_function(module, "glVertexAttribI1uiEXT", gl_VertexAttribI1uiEXT, 2);
845
- rb_define_module_function(module, "glVertexAttribI2uiEXT", gl_VertexAttribI2uiEXT, 3);
846
- rb_define_module_function(module, "glVertexAttribI3uiEXT", gl_VertexAttribI3uiEXT, 4);
847
- rb_define_module_function(module, "glVertexAttribI4uiEXT", gl_VertexAttribI4uiEXT, 5);
848
- rb_define_module_function(module, "glVertexAttribI1ivEXT", gl_VertexAttribI1ivEXT, 2);
849
- rb_define_module_function(module, "glVertexAttribI2ivEXT", gl_VertexAttribI2ivEXT, 2);
850
- rb_define_module_function(module, "glVertexAttribI3ivEXT", gl_VertexAttribI3ivEXT, 2);
851
- rb_define_module_function(module, "glVertexAttribI4ivEXT", gl_VertexAttribI4ivEXT, 2);
852
- rb_define_module_function(module, "glVertexAttribI1uivEXT", gl_VertexAttribI1uivEXT, 2);
853
- rb_define_module_function(module, "glVertexAttribI2uivEXT", gl_VertexAttribI2uivEXT, 2);
854
- rb_define_module_function(module, "glVertexAttribI3uivEXT", gl_VertexAttribI3uivEXT, 2);
855
- rb_define_module_function(module, "glVertexAttribI4uivEXT", gl_VertexAttribI4uivEXT, 2);
856
- rb_define_module_function(module, "glVertexAttribI4bvEXT", gl_VertexAttribI4bvEXT, 2);
857
- rb_define_module_function(module, "glVertexAttribI4svEXT", gl_VertexAttribI4svEXT, 2);
858
- rb_define_module_function(module, "glVertexAttribI4ubvEXT", gl_VertexAttribI4ubvEXT, 2);
859
- rb_define_module_function(module, "glVertexAttribI4usvEXT", gl_VertexAttribI4usvEXT, 2);
860
- rb_define_module_function(module, "glVertexAttribIPointerEXT", gl_VertexAttribIPointerEXT, 5);
861
- rb_define_module_function(module, "glGetVertexAttribIivEXT", gl_GetVertexAttribIivEXT, 2);
862
- rb_define_module_function(module, "glGetVertexAttribIuivEXT", gl_GetVertexAttribIuivEXT, 2);
863
- rb_define_module_function(module, "glUniform1uiEXT", gl_Uniform1uiEXT, 2);
864
- rb_define_module_function(module, "glUniform2uiEXT", gl_Uniform2uiEXT, 3);
865
- rb_define_module_function(module, "glUniform3uiEXT", gl_Uniform3uiEXT, 4);
866
- rb_define_module_function(module, "glUniform4uiEXT", gl_Uniform4uiEXT, 5);
867
- rb_define_module_function(module, "glUniform1uivEXT", gl_Uniform1uivEXT, 2);
868
- rb_define_module_function(module, "glUniform2uivEXT", gl_Uniform2uivEXT, 2);
869
- rb_define_module_function(module, "glUniform3uivEXT", gl_Uniform3uivEXT, 2);
870
- rb_define_module_function(module, "glUniform4uivEXT", gl_Uniform4uivEXT, 2);
871
- rb_define_module_function(module, "glGetUniformuivEXT", gl_GetUniformuivEXT, 2);
872
- rb_define_module_function(module, "glBindFragDataLocationEXT", gl_BindFragDataLocationEXT, 3);
873
- rb_define_module_function(module, "glGetFragDataLocationEXT", gl_GetFragDataLocationEXT, 2);
836
+ rb_define_method(klass, "glVertexAttribI1iEXT", gl_VertexAttribI1iEXT, 2);
837
+ rb_define_method(klass, "glVertexAttribI2iEXT", gl_VertexAttribI2iEXT, 3);
838
+ rb_define_method(klass, "glVertexAttribI3iEXT", gl_VertexAttribI3iEXT, 4);
839
+ rb_define_method(klass, "glVertexAttribI4iEXT", gl_VertexAttribI4iEXT, 5);
840
+ rb_define_method(klass, "glVertexAttribI1uiEXT", gl_VertexAttribI1uiEXT, 2);
841
+ rb_define_method(klass, "glVertexAttribI2uiEXT", gl_VertexAttribI2uiEXT, 3);
842
+ rb_define_method(klass, "glVertexAttribI3uiEXT", gl_VertexAttribI3uiEXT, 4);
843
+ rb_define_method(klass, "glVertexAttribI4uiEXT", gl_VertexAttribI4uiEXT, 5);
844
+ rb_define_method(klass, "glVertexAttribI1ivEXT", gl_VertexAttribI1ivEXT, 2);
845
+ rb_define_method(klass, "glVertexAttribI2ivEXT", gl_VertexAttribI2ivEXT, 2);
846
+ rb_define_method(klass, "glVertexAttribI3ivEXT", gl_VertexAttribI3ivEXT, 2);
847
+ rb_define_method(klass, "glVertexAttribI4ivEXT", gl_VertexAttribI4ivEXT, 2);
848
+ rb_define_method(klass, "glVertexAttribI1uivEXT", gl_VertexAttribI1uivEXT, 2);
849
+ rb_define_method(klass, "glVertexAttribI2uivEXT", gl_VertexAttribI2uivEXT, 2);
850
+ rb_define_method(klass, "glVertexAttribI3uivEXT", gl_VertexAttribI3uivEXT, 2);
851
+ rb_define_method(klass, "glVertexAttribI4uivEXT", gl_VertexAttribI4uivEXT, 2);
852
+ rb_define_method(klass, "glVertexAttribI4bvEXT", gl_VertexAttribI4bvEXT, 2);
853
+ rb_define_method(klass, "glVertexAttribI4svEXT", gl_VertexAttribI4svEXT, 2);
854
+ rb_define_method(klass, "glVertexAttribI4ubvEXT", gl_VertexAttribI4ubvEXT, 2);
855
+ rb_define_method(klass, "glVertexAttribI4usvEXT", gl_VertexAttribI4usvEXT, 2);
856
+ rb_define_method(klass, "glVertexAttribIPointerEXT", gl_VertexAttribIPointerEXT, 5);
857
+ rb_define_method(klass, "glGetVertexAttribIivEXT", gl_GetVertexAttribIivEXT, 2);
858
+ rb_define_method(klass, "glGetVertexAttribIuivEXT", gl_GetVertexAttribIuivEXT, 2);
859
+ rb_define_method(klass, "glUniform1uiEXT", gl_Uniform1uiEXT, 2);
860
+ rb_define_method(klass, "glUniform2uiEXT", gl_Uniform2uiEXT, 3);
861
+ rb_define_method(klass, "glUniform3uiEXT", gl_Uniform3uiEXT, 4);
862
+ rb_define_method(klass, "glUniform4uiEXT", gl_Uniform4uiEXT, 5);
863
+ rb_define_method(klass, "glUniform1uivEXT", gl_Uniform1uivEXT, 2);
864
+ rb_define_method(klass, "glUniform2uivEXT", gl_Uniform2uivEXT, 2);
865
+ rb_define_method(klass, "glUniform3uivEXT", gl_Uniform3uivEXT, 2);
866
+ rb_define_method(klass, "glUniform4uivEXT", gl_Uniform4uivEXT, 2);
867
+ rb_define_method(klass, "glGetUniformuivEXT", gl_GetUniformuivEXT, 2);
868
+ rb_define_method(klass, "glBindFragDataLocationEXT", gl_BindFragDataLocationEXT, 3);
869
+ rb_define_method(klass, "glGetFragDataLocationEXT", gl_GetFragDataLocationEXT, 2);
874
870
 
875
871
  /* #327 - GL_EXT_draw_instanced */
876
- rb_define_module_function(module, "glDrawArraysInstancedEXT", gl_DrawArraysInstancedEXT, 4);
877
- rb_define_module_function(module, "glDrawElementsInstancedEXT", gl_DrawElementsInstancedEXT, 5);
872
+ rb_define_method(klass, "glDrawArraysInstancedEXT", gl_DrawArraysInstancedEXT, 4);
873
+ rb_define_method(klass, "glDrawElementsInstancedEXT", gl_DrawElementsInstancedEXT, 5);
878
874
 
879
875
  /* #330 - GL_EXT_texture_buffer_object */
880
- rb_define_module_function(module, "glTexBufferEXT", gl_TexBufferEXT, 3);
876
+ rb_define_method(klass, "glTexBufferEXT", gl_TexBufferEXT, 3);
881
877
 
882
878
  /* #343 - GL_EXT_texture_integer */
883
- rb_define_module_function(module, "glClearColorIiEXT", gl_ClearColorIiEXT, 4);
884
- rb_define_module_function(module, "glClearColorIuiEXT", gl_ClearColorIuiEXT, 4);
885
- rb_define_module_function(module, "glTexParameterIivEXT", gl_TexParameterIivEXT, 3);
886
- rb_define_module_function(module, "glTexParameterIuivEXT", gl_TexParameterIuivEXT, 3);
887
- rb_define_module_function(module, "glGetTexParameterIivEXT", gl_GetTexParameterIivEXT, 2);
888
- rb_define_module_function(module, "glGetTexParameterIuivEXT", gl_GetTexParameterIuivEXT, 2);
879
+ rb_define_method(klass, "glClearColorIiEXT", gl_ClearColorIiEXT, 4);
880
+ rb_define_method(klass, "glClearColorIuiEXT", gl_ClearColorIuiEXT, 4);
881
+ rb_define_method(klass, "glTexParameterIivEXT", gl_TexParameterIivEXT, 3);
882
+ rb_define_method(klass, "glTexParameterIuivEXT", gl_TexParameterIuivEXT, 3);
883
+ rb_define_method(klass, "glGetTexParameterIivEXT", gl_GetTexParameterIivEXT, 2);
884
+ rb_define_method(klass, "glGetTexParameterIuivEXT", gl_GetTexParameterIuivEXT, 2);
889
885
  }