opengl 0.9.2-x64-mingw32 → 0.10.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,6 +1,6 @@
1
- /* This file was genereated on 2013-02-27 15:05:34 +0100
2
- source: http://www.opengl.org/registry/api/enum.spec
3
- source: http://www.opengl.org/registry/api/enumext.spec
1
+ /* This file was genereated on 2015-01-17 21:05:45 +0100
2
+ source: https://www.opengl.org/registry/oldspecs/enum.spec
3
+ source: https://www.opengl.org/registry/oldspecs/enumext.spec
4
4
  */
5
5
 
6
6
  #ifndef GL_1PASS_EXT
@@ -252,6 +252,9 @@
252
252
  #ifndef GL_ALL_SHADER_BITS_EXT
253
253
  #define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF
254
254
  #endif
255
+ #ifndef GL_ALL_STATIC_DATA_IBM
256
+ #define GL_ALL_STATIC_DATA_IBM 103060
257
+ #endif
255
258
  #ifndef GL_ALPHA
256
259
  #define GL_ALPHA 0x1906
257
260
  #endif
@@ -1930,7 +1933,7 @@
1930
1933
  #define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
1931
1934
  #endif
1932
1935
  #ifndef GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT
1933
- #define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001
1936
+ #define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
1934
1937
  #endif
1935
1938
  #ifndef GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB
1936
1939
  #define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
@@ -2116,13 +2119,13 @@
2116
2119
  #define GL_COPY_PIXEL_TOKEN 0x0706
2117
2120
  #endif
2118
2121
  #ifndef GL_COPY_READ_BUFFER
2119
- #define GL_COPY_READ_BUFFER GL_COPY_READ_BUFFER_BINDING
2122
+ #define GL_COPY_READ_BUFFER 0x8F36
2120
2123
  #endif
2121
2124
  #ifndef GL_COPY_READ_BUFFER_BINDING
2122
2125
  #define GL_COPY_READ_BUFFER_BINDING 0x8F36
2123
2126
  #endif
2124
2127
  #ifndef GL_COPY_WRITE_BUFFER
2125
- #define GL_COPY_WRITE_BUFFER GL_COPY_WRITE_BUFFER_BINDING
2128
+ #define GL_COPY_WRITE_BUFFER 0x8F37
2126
2129
  #endif
2127
2130
  #ifndef GL_COPY_WRITE_BUFFER_BINDING
2128
2131
  #define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
@@ -2164,7 +2167,7 @@
2164
2167
  #define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6
2165
2168
  #endif
2166
2169
  #ifndef GL_COVERAGE_SAMPLES_NV
2167
- #define GL_COVERAGE_SAMPLES_NV 0x80A9
2170
+ #define GL_COVERAGE_SAMPLES_NV 0x8ED4
2168
2171
  #endif
2169
2172
  #ifndef GL_CPU_OPTIMIZED_QCOM
2170
2173
  #define GL_CPU_OPTIMIZED_QCOM 0x8FB1
@@ -3124,10 +3127,10 @@
3124
3127
  #define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
3125
3128
  #endif
3126
3129
  #ifndef GL_DRAW_FRAMEBUFFER_BINDING
3127
- #define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING
3130
+ #define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
3128
3131
  #endif
3129
3132
  #ifndef GL_DRAW_FRAMEBUFFER_BINDING_EXT
3130
- #define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
3133
+ #define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
3131
3134
  #endif
3132
3135
  #ifndef GL_DRAW_FRAMEBUFFER_BINDING_NV
3133
3136
  #define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
@@ -3408,54 +3411,6 @@
3408
3411
  #ifndef GL_EVAL_TRIANGULAR_2D_NV
3409
3412
  #define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
3410
3413
  #endif
3411
- #ifndef GL_EVAL_VERTEX_ATRRIB0_NV
3412
- #define GL_EVAL_VERTEX_ATRRIB0_NV 0x86C6
3413
- #endif
3414
- #ifndef GL_EVAL_VERTEX_ATRRIB10_NV
3415
- #define GL_EVAL_VERTEX_ATRRIB10_NV 0x86D0
3416
- #endif
3417
- #ifndef GL_EVAL_VERTEX_ATRRIB11_NV
3418
- #define GL_EVAL_VERTEX_ATRRIB11_NV 0x86D1
3419
- #endif
3420
- #ifndef GL_EVAL_VERTEX_ATRRIB12_NV
3421
- #define GL_EVAL_VERTEX_ATRRIB12_NV 0x86D2
3422
- #endif
3423
- #ifndef GL_EVAL_VERTEX_ATRRIB13_NV
3424
- #define GL_EVAL_VERTEX_ATRRIB13_NV 0x86D3
3425
- #endif
3426
- #ifndef GL_EVAL_VERTEX_ATRRIB14_NV
3427
- #define GL_EVAL_VERTEX_ATRRIB14_NV 0x86D4
3428
- #endif
3429
- #ifndef GL_EVAL_VERTEX_ATRRIB15_NV
3430
- #define GL_EVAL_VERTEX_ATRRIB15_NV 0x86D5
3431
- #endif
3432
- #ifndef GL_EVAL_VERTEX_ATRRIB1_NV
3433
- #define GL_EVAL_VERTEX_ATRRIB1_NV 0x86C7
3434
- #endif
3435
- #ifndef GL_EVAL_VERTEX_ATRRIB2_NV
3436
- #define GL_EVAL_VERTEX_ATRRIB2_NV 0x86C8
3437
- #endif
3438
- #ifndef GL_EVAL_VERTEX_ATRRIB3_NV
3439
- #define GL_EVAL_VERTEX_ATRRIB3_NV 0x86C9
3440
- #endif
3441
- #ifndef GL_EVAL_VERTEX_ATRRIB4_NV
3442
- #define GL_EVAL_VERTEX_ATRRIB4_NV 0x86CA
3443
- #endif
3444
- #ifndef GL_EVAL_VERTEX_ATRRIB5_NV
3445
- #define GL_EVAL_VERTEX_ATRRIB5_NV 0x86CB
3446
- #endif
3447
- #ifndef GL_EVAL_VERTEX_ATRRIB6_NV
3448
- #define GL_EVAL_VERTEX_ATRRIB6_NV 0x86CC
3449
- #endif
3450
- #ifndef GL_EVAL_VERTEX_ATRRIB7_NV
3451
- #define GL_EVAL_VERTEX_ATRRIB7_NV 0x86CD
3452
- #endif
3453
- #ifndef GL_EVAL_VERTEX_ATRRIB8_NV
3454
- #define GL_EVAL_VERTEX_ATRRIB8_NV 0x86CE
3455
- #endif
3456
- #ifndef GL_EVAL_VERTEX_ATRRIB9_NV
3457
- #define GL_EVAL_VERTEX_ATRRIB9_NV 0x86CF
3458
- #endif
3459
3414
  #ifndef GL_EVAL_VERTEX_ATTRIB0_NV
3460
3415
  #define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
3461
3416
  #endif
@@ -3897,18 +3852,12 @@
3897
3852
  #ifndef GL_FOG_END
3898
3853
  #define GL_FOG_END 0x0B64
3899
3854
  #endif
3900
- #ifndef GL_FOG_FACTOR_TO_ALPHA_SGIX
3901
- #define GL_FOG_FACTOR_TO_ALPHA_SGIX 0x836F
3902
- #endif
3903
3855
  #ifndef GL_FOG_FUNC_POINTS_SGIS
3904
3856
  #define GL_FOG_FUNC_POINTS_SGIS 0x812B
3905
3857
  #endif
3906
3858
  #ifndef GL_FOG_FUNC_SGIS
3907
3859
  #define GL_FOG_FUNC_SGIS 0x812A
3908
3860
  #endif
3909
- #ifndef GL_FOG_GEN_MODE_NV
3910
- #define GL_FOG_GEN_MODE_NV 0x855A
3911
- #endif
3912
3861
  #ifndef GL_FOG_HINT
3913
3862
  #define GL_FOG_HINT 0x0C54
3914
3863
  #endif
@@ -3924,12 +3873,6 @@
3924
3873
  #ifndef GL_FOG_OFFSET_VALUE_SGIX
3925
3874
  #define GL_FOG_OFFSET_VALUE_SGIX 0x8199
3926
3875
  #endif
3927
- #ifndef GL_FOG_SCALE_SGIX
3928
- #define GL_FOG_SCALE_SGIX 0x81FC
3929
- #endif
3930
- #ifndef GL_FOG_SCALE_VALUE_SGIX
3931
- #define GL_FOG_SCALE_VALUE_SGIX 0x81FD
3932
- #endif
3933
3876
  #ifndef GL_FOG_SPECULAR_TEXTURE_WIN
3934
3877
  #define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
3935
3878
  #endif
@@ -5886,6 +5829,9 @@
5886
5829
  #ifndef GL_MAJOR_VERSION
5887
5830
  #define GL_MAJOR_VERSION 0x821B
5888
5831
  #endif
5832
+ #ifndef GL_MALI_PROGRAM_BINARY_ARM
5833
+ #define GL_MALI_PROGRAM_BINARY_ARM 0x8F61
5834
+ #endif
5889
5835
  #ifndef GL_MALI_SHADER_BINARY_ARM
5890
5836
  #define GL_MALI_SHADER_BINARY_ARM 0x8F60
5891
5837
  #endif
@@ -6418,7 +6364,7 @@
6418
6364
  #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
6419
6365
  #endif
6420
6366
  #ifndef GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES
6421
- #define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
6367
+ #define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
6422
6368
  #endif
6423
6369
  #ifndef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS
6424
6370
  #define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
@@ -6900,9 +6846,6 @@
6900
6846
  #ifndef GL_MAX_PROGRAM_TEXEL_OFFSET_NV
6901
6847
  #define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
6902
6848
  #endif
6903
- #ifndef GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS
6904
- #define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F
6905
- #endif
6906
6849
  #ifndef GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB
6907
6850
  #define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
6908
6851
  #endif
@@ -7384,13 +7327,13 @@
7384
7327
  #define GL_MODELVIEW0_ARB 0x1700
7385
7328
  #endif
7386
7329
  #ifndef GL_MODELVIEW0_EXT
7387
- #define GL_MODELVIEW0_EXT GL_MODELVIEW
7330
+ #define GL_MODELVIEW0_EXT 0x1700
7388
7331
  #endif
7389
7332
  #ifndef GL_MODELVIEW0_MATRIX_EXT
7390
- #define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX
7333
+ #define GL_MODELVIEW0_MATRIX_EXT 0x0BA6
7391
7334
  #endif
7392
7335
  #ifndef GL_MODELVIEW0_STACK_DEPTH_EXT
7393
- #define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH
7336
+ #define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
7394
7337
  #endif
7395
7338
  #ifndef GL_MODELVIEW10_ARB
7396
7339
  #define GL_MODELVIEW10_ARB 0x872A
@@ -7497,9 +7440,6 @@
7497
7440
  #ifndef GL_MODELVIEW_MATRIX
7498
7441
  #define GL_MODELVIEW_MATRIX 0x0BA6
7499
7442
  #endif
7500
- #ifndef GL_MODELVIEW_MATRIX1_EXT
7501
- #define GL_MODELVIEW_MATRIX1_EXT 0x8506
7502
- #endif
7503
7443
  #ifndef GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES
7504
7444
  #define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D
7505
7445
  #endif
@@ -7906,16 +7846,16 @@
7906
7846
  #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
7907
7847
  #endif
7908
7848
  #ifndef GL_OFFSET_TEXTURE_2D_BIAS_NV
7909
- #define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV
7849
+ #define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
7910
7850
  #endif
7911
7851
  #ifndef GL_OFFSET_TEXTURE_2D_MATRIX_NV
7912
- #define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV
7852
+ #define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
7913
7853
  #endif
7914
7854
  #ifndef GL_OFFSET_TEXTURE_2D_NV
7915
7855
  #define GL_OFFSET_TEXTURE_2D_NV 0x86E8
7916
7856
  #endif
7917
7857
  #ifndef GL_OFFSET_TEXTURE_2D_SCALE_NV
7918
- #define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV
7858
+ #define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
7919
7859
  #endif
7920
7860
  #ifndef GL_OFFSET_TEXTURE_BIAS_NV
7921
7861
  #define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
@@ -10335,6 +10275,9 @@
10335
10275
  #ifndef GL_RGBA8_EXT
10336
10276
  #define GL_RGBA8_EXT 0x8058
10337
10277
  #endif
10278
+ #ifndef GL_RGBA8_OES
10279
+ #define GL_RGBA8_OES 0x8058
10280
+ #endif
10338
10281
  #ifndef GL_RGBA8_SNORM
10339
10282
  #define GL_RGBA8_SNORM 0x8F97
10340
10283
  #endif
@@ -11038,7 +10981,7 @@
11038
10981
  #define GL_SHADER_SOURCE_LENGTH 0x8B88
11039
10982
  #endif
11040
10983
  #ifndef GL_SHADER_STORAGE_BARRIER_BIT
11041
- #define GL_SHADER_STORAGE_BARRIER_BIT 0x2000
10984
+ #define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
11042
10985
  #endif
11043
10986
  #ifndef GL_SHADER_STORAGE_BLOCK
11044
10987
  #define GL_SHADER_STORAGE_BLOCK 0x92E6
@@ -11472,6 +11415,9 @@
11472
11415
  #ifndef GL_STATIC_READ_ARB
11473
11416
  #define GL_STATIC_READ_ARB 0x88E5
11474
11417
  #endif
11418
+ #ifndef GL_STATIC_VERTEX_ARRAY_IBM
11419
+ #define GL_STATIC_VERTEX_ARRAY_IBM 103061
11420
+ #endif
11475
11421
  #ifndef GL_STENCIL
11476
11422
  #define GL_STENCIL 0x1802
11477
11423
  #endif
@@ -13066,7 +13012,7 @@
13066
13012
  #define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
13067
13013
  #endif
13068
13014
  #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE
13069
- #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE GL_TRANSFORM_FEEDBACK_ACTIVE
13015
+ #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
13070
13016
  #endif
13071
13017
  #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV
13072
13018
  #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
@@ -13096,7 +13042,7 @@
13096
13042
  #define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
13097
13043
  #endif
13098
13044
  #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED
13099
- #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED GL_TRANSFORM_FEEDBACK_PAUSED
13045
+ #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
13100
13046
  #endif
13101
13047
  #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV
13102
13048
  #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
@@ -13251,9 +13197,6 @@
13251
13197
  #ifndef GL_TYPE
13252
13198
  #define GL_TYPE 0x92FA
13253
13199
  #endif
13254
- #ifndef GL_TYPE_RGBA_FLOAT_ATI
13255
- #define GL_TYPE_RGBA_FLOAT_ATI 0x8820
13256
- #endif
13257
13200
  #ifndef GL_UNDEFINED_APPLE
13258
13201
  #define GL_UNDEFINED_APPLE 0x8A1C
13259
13202
  #endif
@@ -13713,9 +13656,6 @@
13713
13656
  #ifndef GL_UNSIGNED_INVERT_NV
13714
13657
  #define GL_UNSIGNED_INVERT_NV 0x8537
13715
13658
  #endif
13716
- #ifndef GL_UNSIGNED_NEGATE_NV
13717
- #define GL_UNSIGNED_NEGATE_NV 0x853D
13718
- #endif
13719
13659
  #ifndef GL_UNSIGNED_NORMALIZED
13720
13660
  #define GL_UNSIGNED_NORMALIZED 0x8C17
13721
13661
  #endif
@@ -15,17 +15,17 @@
15
15
 
16
16
  #include "common.h"
17
17
 
18
- VALUE error_checking = Qtrue;
19
-
20
18
  VALUE Class_GLError;
21
19
 
22
20
  #define BUFSIZE 256
23
21
 
24
- void check_for_glerror(const char *caller)
22
+ void check_for_glerror(VALUE obj, const char *caller)
25
23
  {
26
24
  GLenum error;
25
+ DECL_GL_FUNC_PTR(GLenum,glGetError,(void));
27
26
 
28
- error = glGetError();
27
+ LOAD_GL_FUNC(glGetError, NULL);
28
+ error = fptr_glGetError();
29
29
 
30
30
  if (error==GL_NO_ERROR) { /* no errors == instant return */
31
31
  return;
@@ -41,13 +41,13 @@ void check_for_glerror(const char *caller)
41
41
  } else {
42
42
  caller = "";
43
43
  }
44
-
44
+
45
45
  /* check for queued errors */
46
46
  for(queued_errors = 0;
47
- glGetError()!=GL_NO_ERROR;
47
+ fptr_glGetError()!=GL_NO_ERROR;
48
48
  queued_errors++)
49
49
  ;
50
-
50
+
51
51
  switch(error) {
52
52
  case GL_INVALID_ENUM: error_string = "invalid enumerant"; break;
53
53
  case GL_INVALID_VALUE: error_string = "invalid value"; break;
@@ -59,7 +59,7 @@ void check_for_glerror(const char *caller)
59
59
  case GL_INVALID_FRAMEBUFFER_OPERATION_EXT: error_string = "invalid framebuffer operation"; break;
60
60
  default: error_string = "unknown error"; break;
61
61
  }
62
-
62
+
63
63
  if (queued_errors==0) {
64
64
  snprintf(message, BUFSIZE, "%s%s%s", error_string, from, caller);
65
65
  } else {
@@ -82,31 +82,29 @@ VALUE GLError_initialize(VALUE obj,VALUE message, VALUE error_id)
82
82
 
83
83
  static VALUE enable_error_checking(VALUE obj)
84
84
  {
85
- error_checking = Qtrue;
85
+ SET_GLIMPL_VARIABLE(error_checking, Qtrue);
86
86
  return Qnil;
87
87
  }
88
88
 
89
89
  static VALUE disable_error_checking(VALUE obj)
90
90
  {
91
- error_checking = Qfalse;
91
+ SET_GLIMPL_VARIABLE(error_checking, Qfalse);
92
92
  return Qnil;
93
93
  }
94
94
 
95
95
  static VALUE is_error_checking_enabled(VALUE obj)
96
96
  {
97
- return error_checking;
97
+ return GET_GLIMPL_VARIABLE(error_checking);
98
98
  }
99
99
 
100
- void gl_init_error(VALUE module)
100
+ void gl_init_error(VALUE klass, VALUE module)
101
101
  {
102
102
  Class_GLError = rb_define_class_under(module, "Error", rb_eStandardError);
103
103
 
104
104
  rb_define_method(Class_GLError, "initialize", GLError_initialize, 2);
105
105
  rb_define_attr(Class_GLError, "id", 1, 0);
106
106
 
107
- rb_define_module_function(module, "enable_error_checking", enable_error_checking, 0);
108
- rb_define_module_function(module, "disable_error_checking", disable_error_checking, 0);
109
- rb_define_module_function(module, "is_error_checking_enabled?", is_error_checking_enabled, 0);
110
-
111
- rb_global_variable(&error_checking);
107
+ rb_define_method(klass, "enable_error_checking", enable_error_checking, 0);
108
+ rb_define_method(klass, "disable_error_checking", disable_error_checking, 0);
109
+ rb_define_method(klass, "is_error_checking_enabled?", is_error_checking_enabled, 0);
112
110
  }
@@ -13,16 +13,13 @@
13
13
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14
14
  */
15
15
 
16
- void gl_init_error(VALUE);
16
+ void gl_init_error(VALUE, VALUE);
17
17
 
18
- extern VALUE error_checking;
19
- extern VALUE inside_begin_end;
20
-
21
- void check_for_glerror(const char *);
18
+ void check_for_glerror(VALUE self, const char *);
22
19
 
23
20
  #define CHECK_GLERROR_FROM(caller) \
24
21
  do { \
25
- if (error_checking == Qtrue && inside_begin_end == Qfalse) \
26
- check_for_glerror(caller); \
22
+ if (GET_GLIMPL_VARIABLE(error_checking) == Qtrue && GET_GLIMPL_VARIABLE(inside_begin_end) == Qfalse) \
23
+ check_for_glerror(obj, caller); \
27
24
  } while (0)
28
25
 
@@ -20,8 +20,8 @@
20
20
  /* #208 - GL_3DFX_tbuffer */
21
21
  GL_FUNC_LOAD_1(TbufferMask3DFX,GLvoid, GLuint, "GL_3DFX_tbuffer")
22
22
 
23
- void gl_init_functions_ext_3dfx(VALUE module)
23
+ void gl_init_functions_ext_3dfx(VALUE klass)
24
24
  {
25
25
  /* #208 - GL_3DFX_tbuffer */
26
- rb_define_module_function(module, "glTbufferMask3DFX", gl_TbufferMask3DFX, 1);
26
+ rb_define_method(klass, "glTbufferMask3DFX", gl_TbufferMask3DFX, 1);
27
27
  }
@@ -19,12 +19,12 @@
19
19
 
20
20
  /* #3 GL_ARB_transpose_matrix */
21
21
  #define TRANSPOSEMATRIX_FUNC(_name_,_type_,_conv_) \
22
- static void (APIENTRY * fptr_gl##_name_)(const _type_[]); \
23
22
  static VALUE \
24
23
  gl_##_name_(obj,arg1) \
25
24
  VALUE obj,arg1; \
26
25
  { \
27
26
  _type_ m[4*4]; \
27
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(const _type_[])); \
28
28
  LOAD_GL_FUNC(gl##_name_, "GL_ARB_transpose_matrix"); \
29
29
  _conv_(arg1, m, 4, 4); \
30
30
  fptr_gl##_name_(m); \
@@ -45,12 +45,12 @@ GL_FUNC_LOAD_2(SampleCoverageARB,GLvoid, GLclampf,GLboolean, "GL_ARB_multisample
45
45
  /* #14 GL_ARB_point_parameters */
46
46
  GL_FUNC_LOAD_2(PointParameterfARB,GLvoid, GLenum,GLfloat, "GL_ARB_point_parameters")
47
47
 
48
- static void (APIENTRY * fptr_glPointParameterfvARB)(GLenum,GLfloat *);
49
48
  static VALUE gl_PointParameterfvARB(VALUE obj,VALUE arg1,VALUE arg2)
50
49
  {
51
50
  GLfloat params[3] = {(GLfloat)0.0,(GLfloat)0.0,(GLfloat)0.0};
52
51
  GLenum pname;
53
52
  GLint size;
53
+ DECL_GL_FUNC_PTR(GLvoid,glPointParameterfvARB,(GLenum,GLfloat *));
54
54
  LOAD_GL_FUNC(glPointParameterfvARB, "GL_ARB_point_parameters");
55
55
  pname = NUM2UINT(arg1);
56
56
  Check_Type(arg2,T_ARRAY);
@@ -75,10 +75,10 @@ GL_FUNC_LOAD_3(WindowPos3iARB,GLvoid, GLint,GLint,GLint, "GL_ARB_window_pos")
75
75
  GL_FUNC_LOAD_3(WindowPos3sARB,GLvoid, GLshort,GLshort,GLshort, "GL_ARB_window_pos")
76
76
 
77
77
  #define WINDOWPOSFUNCV(_name_,_type_,_conv_,_size_,_ext_) \
78
- static void (APIENTRY * fptr_gl##_name_)(const _type_ *); \
79
78
  static VALUE gl_##_name_(VALUE obj,VALUE arg1) \
80
79
  { \
81
80
  _type_ cary[_size_]; \
81
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(const _type_ *)); \
82
82
  LOAD_GL_FUNC(gl##_name_, _ext_); \
83
83
  Check_Type(arg1,T_ARRAY); \
84
84
  if (RARRAY_LEN(arg1) != _size_) \
@@ -101,9 +101,9 @@ WINDOWPOSFUNCV(WindowPos3svARB,GLshort,ary2cshort,3,"GL_ARB_window_pos")
101
101
 
102
102
 
103
103
  /* #26 GL_ARB_vertex_program */
104
- static void (APIENTRY * fptr_glProgramStringARB)(GLenum,GLenum,GLsizei,const void *);
105
104
  static VALUE gl_ProgramStringARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
106
105
  {
106
+ DECL_GL_FUNC_PTR(GLvoid,glProgramStringARB,(GLenum,GLenum,GLsizei,const void *));
107
107
  LOAD_GL_FUNC(glProgramStringARB, "GL_ARB_vertex_program");
108
108
  Check_Type(arg3,T_STRING);
109
109
  fptr_glProgramStringARB((GLenum)NUM2INT(arg1),(GLenum)NUM2INT(arg2),(GLsizei)RSTRING_LENINT(arg3),RSTRING_PTR(arg3));
@@ -111,23 +111,24 @@ static VALUE gl_ProgramStringARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
111
111
  return Qnil;
112
112
  }
113
113
 
114
- static void (APIENTRY * fptr_glGetProgramivARB)(GLenum,GLenum,GLint *);
115
114
  static VALUE gl_GetProgramivARB(VALUE obj,VALUE arg1,VALUE arg2)
116
115
  {
117
116
  GLint ret = 0;
117
+ DECL_GL_FUNC_PTR(GLvoid,glGetProgramivARB,(GLenum,GLenum,GLint *));
118
118
  LOAD_GL_FUNC(glGetProgramivARB, "GL_ARB_vertex_program");
119
119
  fptr_glGetProgramivARB(NUM2INT(arg1),NUM2INT(arg2),&ret);
120
120
  CHECK_GLERROR_FROM("glGetProgramivARB");
121
121
  return cond_GLBOOL2RUBY(NUM2INT(arg2),ret);
122
122
  }
123
123
 
124
- static void (APIENTRY * fptr_glGetProgramStringARB)(GLenum,GLenum,void *string);
125
124
  static VALUE gl_GetProgramStringARB(VALUE obj,VALUE arg1,VALUE arg2)
126
125
  {
127
126
  GLsizei len = 0;
128
127
  char *buffer;
129
128
  VALUE ret_buffer;
130
129
 
130
+ DECL_GL_FUNC_PTR(GLvoid,glGetProgramStringARB,(GLenum,GLenum,void *string));
131
+ DECL_GL_FUNC_PTR(GLvoid,glGetProgramivARB,(GLenum,GLenum,GLint *));
131
132
  LOAD_GL_FUNC(glGetProgramStringARB, "GL_ARB_vertex_program");
132
133
  LOAD_GL_FUNC(glGetProgramivARB, "GL_ARB_vertex_program");
133
134
 
@@ -153,9 +154,6 @@ GL_FUNC_LOAD_1(IsProgramARB,GLboolean, GLuint, "GL_ARB_vertex_program")
153
154
  GL_FUNC_LOAD_1(EnableVertexAttribArrayARB,GLvoid, GLuint, "GL_ARB_vertex_program")
154
155
  GL_FUNC_LOAD_1(DisableVertexAttribArrayARB,GLvoid, GLuint, "GL_ARB_vertex_program")
155
156
 
156
- extern VALUE g_VertexAttrib_ptr[];
157
-
158
- static void (APIENTRY * fptr_glVertexAttribPointerARB)(GLuint,GLint,GLenum,GLboolean,GLsizei,const GLvoid *);
159
157
  static VALUE gl_VertexAttribPointerARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3,VALUE arg4,VALUE arg5,VALUE arg6)
160
158
  {
161
159
  GLuint index;
@@ -164,6 +162,7 @@ static VALUE gl_VertexAttribPointerARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg
164
162
  GLboolean normalized;
165
163
  GLsizei stride;
166
164
 
165
+ DECL_GL_FUNC_PTR(GLvoid,glVertexAttribPointerARB,(GLuint,GLint,GLenum,GLboolean,GLsizei,const GLvoid *));
167
166
  LOAD_GL_FUNC(glVertexAttribPointerARB, "GL_ARB_vertex_program");
168
167
 
169
168
  index = (GLuint)NUM2UINT(arg1);
@@ -174,14 +173,14 @@ static VALUE gl_VertexAttribPointerARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg
174
173
  if (index>_MAX_VERTEX_ATTRIBS)
175
174
  rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);
176
175
 
177
- if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
178
- g_VertexAttrib_ptr[index] = arg6;
176
+ if (CHECK_BUFFER_BINDING(GL_ARRAY_BUFFER_BINDING)) {
177
+ GET_GLIMPL_VARIABLE(VertexAttrib_ptr)[index] = arg6;
179
178
  fptr_glVertexAttribPointerARB(index,size,type,normalized,stride,(GLvoid *)NUM2SIZET(arg6));
180
179
  } else {
181
180
  VALUE data;
182
181
  data = pack_array_or_pass_string(type,arg6);
183
182
  rb_str_freeze(data);
184
- g_VertexAttrib_ptr[index] = data;
183
+ GET_GLIMPL_VARIABLE(VertexAttrib_ptr)[index] = data;
185
184
  fptr_glVertexAttribPointerARB(index,size,type,normalized,stride,(GLvoid *)RSTRING_PTR(data));
186
185
  }
187
186
 
@@ -190,18 +189,18 @@ static VALUE gl_VertexAttribPointerARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg
190
189
  }
191
190
 
192
191
 
193
- static void (APIENTRY * fptr_glGetVertexAttribPointervARB)(GLuint,GLenum,GLvoid **);
194
192
  static VALUE
195
193
  gl_GetVertexAttribPointervARB(obj,arg1)
196
194
  VALUE obj,arg1;
197
195
  {
198
196
  GLuint index;
197
+ DECL_GL_FUNC_PTR(GLvoid,glGetVertexAttribPointervARB,(GLuint,GLenum,GLvoid **));
199
198
  LOAD_GL_FUNC(glGetVertexAttribPointervARB, "GL_ARB_vertex_program");
200
199
  index =(GLuint) NUM2INT(arg1);
201
200
  if (index>_MAX_VERTEX_ATTRIBS)
202
201
  rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);
203
202
 
204
- return g_VertexAttrib_ptr[index];
203
+ return GET_GLIMPL_VARIABLE(VertexAttrib_ptr)[index];
205
204
  }
206
205
 
207
206
  GL_FUNC_LOAD_6(ProgramEnvParameter4dARB,GLvoid, GLenum,GLuint,GLdouble,GLdouble,GLdouble,GLdouble, "GL_ARB_vertex_program")
@@ -210,12 +209,12 @@ GL_FUNC_LOAD_6(ProgramLocalParameter4dARB,GLvoid, GLenum,GLuint,GLdouble,GLdoubl
210
209
  GL_FUNC_LOAD_6(ProgramLocalParameter4fARB,GLvoid, GLenum,GLuint,GLfloat,GLfloat,GLfloat,GLfloat, "GL_ARB_vertex_program")
211
210
 
212
211
  #define PROGRAMPARAM_FUNC_V(_name_,_type_,_conv_,_extension_) \
213
- static void (APIENTRY * fptr_gl##_name_)(GLenum,GLuint,const _type_ *); \
214
212
  static VALUE \
215
213
  gl_##_name_(obj,arg1,arg2,arg3) \
216
214
  VALUE obj,arg1,arg2,arg3; \
217
215
  { \
218
216
  _type_ cary[4]; \
217
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLenum,GLuint,const _type_ *)); \
219
218
  LOAD_GL_FUNC(gl##_name_, _extension_); \
220
219
  _conv_(arg3,cary,4); \
221
220
  fptr_gl##_name_(NUM2UINT(arg1),NUM2UINT(arg2),cary); \
@@ -230,12 +229,12 @@ PROGRAMPARAM_FUNC_V(ProgramLocalParameter4fvARB,GLfloat,ary2cflt,"GL_ARB_vertex_
230
229
  #undef PROGRAMPARAM_FUNC_V
231
230
 
232
231
  #define GETPROGRAMPARAM_FUNC(_name_,_type_,_extension_) \
233
- static void (APIENTRY * fptr_gl##_name_)(GLenum,GLuint,_type_ *); \
234
232
  static VALUE \
235
233
  gl_##_name_(obj,arg1,arg2) \
236
234
  VALUE obj,arg1,arg2; \
237
235
  { \
238
236
  _type_ cary[4] = {(_type_)0.0,(_type_)0.0,(_type_)0.0,(_type_)0.0}; \
237
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLenum,GLuint,_type_ *)); \
239
238
  LOAD_GL_FUNC(gl##_name_, _extension_); \
240
239
  fptr_gl##_name_(NUM2UINT(arg1),NUM2UINT(arg2),cary); \
241
240
  RET_ARRAY_OR_SINGLE("gl" #_name_, 4, RETCONV_##_type_, cary); \
@@ -263,13 +262,13 @@ GL_FUNC_LOAD_5(VertexAttrib4sARB,GLvoid, GLuint,GLshort,GLshort,GLshort,GLshort,
263
262
  GL_FUNC_LOAD_5(VertexAttrib4NubARB,GLvoid, GLuint,GLubyte,GLubyte,GLubyte,GLubyte, "GL_ARB_vertex_program")
264
263
 
265
264
  #define VERTEXATTRIB_FUNC_V(_name_,_type_,_conv_,_size_,_extension_) \
266
- static void (APIENTRY * fptr_gl##_name_)(GLuint,_type_ *); \
267
265
  static VALUE \
268
266
  gl_##_name_(obj,arg1,arg2) \
269
267
  VALUE obj,arg1,arg2; \
270
268
  { \
271
269
  GLuint index; \
272
270
  _type_ v[_size_]; \
271
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,_type_ *)); \
273
272
  LOAD_GL_FUNC(gl##_name_, _extension_); \
274
273
  index = (GLuint)NUM2UINT(arg1); \
275
274
  _conv_(arg2,v,_size_); \
@@ -304,7 +303,6 @@ VERTEXATTRIB_FUNC_V(VertexAttrib1svARB,GLshort,ary2cshort,1,"GL_ARB_vertex_progr
304
303
  #undef VERTEXATTRIB_FUNC_V
305
304
 
306
305
  #define GETVERTEXATTRIB_FUNC(_name_,_type_,_extension_) \
307
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLenum,_type_ *); \
308
306
  static VALUE \
309
307
  gl_##_name_(obj,arg1,arg2) \
310
308
  VALUE obj,arg1,arg2; \
@@ -313,6 +311,7 @@ VALUE obj,arg1,arg2; \
313
311
  GLenum pname; \
314
312
  _type_ params[4] = {0,0,0,0}; \
315
313
  GLint size; \
314
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLenum,_type_ *)); \
316
315
  LOAD_GL_FUNC(gl##_name_, _extension_); \
317
316
  index = (GLuint)NUM2UINT(arg1); \
318
317
  pname = (GLenum)NUM2INT(arg2); \
@@ -329,7 +328,6 @@ GETVERTEXATTRIB_FUNC(GetVertexAttribfvARB,GLfloat,"GL_ARB_vertex_program")
329
328
  //GETVERTEXATTRIB_FUNC(GetVertexAttribivARB,GLint,INT2NUM,"GL_ARB_vertex_program")
330
329
  #undef GETVERTEXATTRIB_FUNC
331
330
 
332
- static void (APIENTRY * fptr_glGetVertexAttribivARB)(GLuint,GLenum,GLint *);
333
331
  static VALUE
334
332
  gl_GetVertexAttribivARB(obj,arg1,arg2)
335
333
  VALUE obj,arg1,arg2;
@@ -338,6 +336,7 @@ VALUE obj,arg1,arg2;
338
336
  GLenum pname;
339
337
  GLint params[4] = {0,0,0,0};
340
338
  GLint size;
339
+ DECL_GL_FUNC_PTR(GLvoid,glGetVertexAttribivARB,(GLuint,GLenum,GLint *));
341
340
  LOAD_GL_FUNC(glGetVertexAttribivARB, "GL_ARB_vertex_program");
342
341
  index = (GLuint)NUM2UINT(arg1);
343
342
  pname = (GLenum)NUM2INT(arg2);
@@ -359,10 +358,10 @@ GL_FUNC_LOAD_2(BeginQueryARB,GLvoid, GLuint,GLuint, "GL_ARB_occlusion_query")
359
358
  GL_FUNC_LOAD_1(EndQueryARB,GLvoid, GLenum, "GL_ARB_occlusion_query")
360
359
 
361
360
  #define GETQUERY_FUNC(_name_,_type_,_conv_) \
362
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLenum,_type_ *); \
363
361
  static VALUE gl_##_name_(VALUE obj,VALUE arg1,VALUE arg2) \
364
362
  { \
365
363
  _type_ ret = 0; \
364
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLenum,_type_ *)); \
366
365
  LOAD_GL_FUNC(gl##_name_, "GL_ARB_occlusion_query"); \
367
366
  fptr_gl##_name_(NUM2INT(arg1),NUM2INT(arg2),&ret); \
368
367
  CHECK_GLERROR_FROM("gl" #_name_); \
@@ -386,7 +385,6 @@ GL_FUNC_LOAD_1(GetHandleARB,GLuint, GLenum, "GL_ARB_shader_objects")
386
385
  GL_FUNC_LOAD_1(CreateShaderObjectARB,GLuint, GLenum, "GL_ARB_shader_objects")
387
386
  GL_FUNC_LOAD_0(CreateProgramObjectARB,GLuint, "GL_ARB_shader_objects")
388
387
 
389
- static void (APIENTRY * fptr_glShaderSourceARB)(GLuint,GLsizei,GLchar**,GLint *);
390
388
  static VALUE
391
389
  gl_ShaderSourceARB(obj,arg1,arg2)
392
390
  VALUE obj,arg1,arg2;
@@ -394,6 +392,7 @@ VALUE obj,arg1,arg2;
394
392
  GLuint shader;
395
393
  GLint length;
396
394
  GLchar *str;
395
+ DECL_GL_FUNC_PTR(GLvoid,glShaderSourceARB,(GLuint,GLsizei,GLchar**,GLint *));
397
396
  LOAD_GL_FUNC(glShaderSourceARB, "GL_ARB_shader_objects");
398
397
  shader = (GLuint)NUM2UINT(arg1);
399
398
  Check_Type(arg2,T_STRING);
@@ -414,7 +413,6 @@ GL_FUNC_LOAD_4(Uniform3iARB,GLvoid, GLint,GLint,GLint,GLint, "GL_ARB_shader_obje
414
413
  GL_FUNC_LOAD_5(Uniform4iARB,GLvoid, GLint,GLint,GLint,GLint,GLint, "GL_ARB_shader_objects")
415
414
 
416
415
  #define GLUNIFORM_VFUNC(_name_,_type_,_conv_,_size_) \
417
- static void (APIENTRY * fptr_gl##_name_)(GLint,GLsizei,const _type_ *); \
418
416
  static VALUE \
419
417
  gl_##_name_(obj,arg1,arg2) \
420
418
  VALUE obj,arg1,arg2; \
@@ -422,6 +420,7 @@ VALUE obj,arg1,arg2; \
422
420
  GLint location; \
423
421
  GLsizei count; \
424
422
  _type_ *value; \
423
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLint,GLsizei,const _type_ *)); \
425
424
  LOAD_GL_FUNC(gl##_name_, "GL_ARB_shader_objects"); \
426
425
  Check_Type(arg2,T_ARRAY); \
427
426
  count = (GLsizei)RARRAY_LENINT(arg2); \
@@ -447,7 +446,6 @@ GLUNIFORM_VFUNC(Uniform4ivARB,GLint,ary2cint,4)
447
446
  #undef GLUNIFORM_VFUNC
448
447
 
449
448
  #define UNIFORMMATRIX_FUNC(_name_,_size_) \
450
- static void (APIENTRY * fptr_gl##_name_)(GLint,GLsizei,GLboolean,GLfloat *); \
451
449
  static VALUE \
452
450
  gl_##_name_(obj,arg1,arg2,arg3) \
453
451
  VALUE obj,arg1,arg2,arg3; \
@@ -456,6 +454,7 @@ VALUE obj,arg1,arg2,arg3; \
456
454
  GLsizei count; \
457
455
  GLboolean transpose; \
458
456
  GLfloat *value; \
457
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLint,GLsizei,GLboolean,GLfloat *)); \
459
458
  LOAD_GL_FUNC(gl##_name_, "GL_ARB_shader_objects"); \
460
459
  location = (GLint)NUM2INT(arg1); \
461
460
  count = (GLsizei)RARRAY_LENINT(rb_funcall(rb_Array(arg3),rb_intern("flatten"),0)); \
@@ -474,7 +473,6 @@ UNIFORMMATRIX_FUNC(UniformMatrix4fvARB,4)
474
473
  #undef UNIFORMMATRIX_FUNC
475
474
 
476
475
  #define GETOBJECTPARAMETER_FUNC(_name_,_type_,_conv_) \
477
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLenum,_type_ *); \
478
476
  static VALUE \
479
477
  gl_##_name_(obj,arg1,arg2) \
480
478
  VALUE obj,arg1,arg2; \
@@ -482,6 +480,7 @@ VALUE obj,arg1,arg2; \
482
480
  GLuint program; \
483
481
  GLenum pname; \
484
482
  _type_ params = 0; \
483
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLenum,_type_ *)); \
485
484
  LOAD_GL_FUNC(gl##_name_, "GL_ARB_shader_objects"); \
486
485
  program = (GLuint)NUM2UINT(arg1); \
487
486
  pname = (GLenum)NUM2INT(arg2); \
@@ -495,7 +494,6 @@ GETOBJECTPARAMETER_FUNC(GetObjectParameterfvARB,GLfloat,cond_GLBOOL2RUBY_F)
495
494
 
496
495
  #undef GETOBJECTPARAMETER_FUNC
497
496
 
498
- static void (APIENTRY * fptr_glGetInfoLogARB)(GLuint,GLsizei,GLsizei *,GLchar *);
499
497
  static VALUE
500
498
  gl_GetInfoLogARB(obj,arg1)
501
499
  VALUE obj,arg1;
@@ -504,6 +502,8 @@ VALUE obj,arg1;
504
502
  GLint max_size = 0;
505
503
  GLsizei ret_length = 0;
506
504
  VALUE buffer;
505
+ DECL_GL_FUNC_PTR(GLvoid,glGetInfoLogARB,(GLuint,GLsizei,GLsizei *,GLchar *));
506
+ DECL_GL_FUNC_PTR(GLvoid,glGetObjectParameterivARB,(GLuint,GLenum,GLint *));
507
507
  LOAD_GL_FUNC(glGetInfoLogARB, "GL_ARB_shader_objects");
508
508
  LOAD_GL_FUNC(glGetObjectParameterivARB, "GL_ARB_shader_objects");
509
509
  program = (GLuint)NUM2UINT(arg1);
@@ -517,7 +517,6 @@ VALUE obj,arg1;
517
517
  return buffer;
518
518
  }
519
519
 
520
- static void (APIENTRY * fptr_glGetShaderSourceARB)(GLuint,GLsizei,GLsizei *,GLchar *);
521
520
  static VALUE
522
521
  gl_GetShaderSourceARB(obj,arg1)
523
522
  VALUE obj,arg1;
@@ -526,6 +525,8 @@ VALUE obj,arg1;
526
525
  GLint max_size = 0;
527
526
  GLsizei ret_length = 0;
528
527
  VALUE buffer;
528
+ DECL_GL_FUNC_PTR(GLvoid,glGetShaderSourceARB,(GLuint,GLsizei,GLsizei *,GLchar *));
529
+ DECL_GL_FUNC_PTR(GLvoid,glGetObjectParameterivARB,(GLuint,GLenum,GLint *));
529
530
  LOAD_GL_FUNC(glGetShaderSourceARB, "GL_ARB_shader_objects");
530
531
  LOAD_GL_FUNC(glGetObjectParameterivARB, "GL_ARB_shader_objects");
531
532
  shader = (GLuint)NUM2UINT(arg1);
@@ -539,7 +540,6 @@ VALUE obj,arg1;
539
540
  return buffer;
540
541
  }
541
542
 
542
- static void (APIENTRY * fptr_glGetActiveUniformARB)(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*);
543
543
  static VALUE
544
544
  gl_GetActiveUniformARB(obj,arg1,arg2)
545
545
  VALUE obj,arg1,arg2;
@@ -552,6 +552,8 @@ VALUE obj,arg1,arg2;
552
552
  GLenum uniform_type = 0;
553
553
  VALUE buffer;
554
554
  VALUE retary;
555
+ DECL_GL_FUNC_PTR(GLvoid,glGetActiveUniformARB,(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*));
556
+ DECL_GL_FUNC_PTR(GLvoid,glGetObjectParameterivARB,(GLuint,GLenum,GLint *));
555
557
  LOAD_GL_FUNC(glGetActiveUniformARB, "GL_ARB_shader_objects");
556
558
  LOAD_GL_FUNC(glGetObjectParameterivARB, "GL_ARB_shader_objects");
557
559
  program = (GLuint)NUM2UINT(arg1);
@@ -574,7 +576,6 @@ VALUE obj,arg1,arg2;
574
576
  }
575
577
 
576
578
  #define GETUNIFORM_FUNC(_name_,_type_) \
577
- static void (APIENTRY * fptr_gl##_name_)(GLuint,GLint,_type_ *); \
578
579
  static VALUE \
579
580
  gl_##_name_(obj,arg1,arg2) \
580
581
  VALUE obj,arg1,arg2; \
@@ -586,6 +587,8 @@ VALUE obj,arg1,arg2; \
586
587
  GLenum uniform_type = 0; \
587
588
  GLint uniform_size = 0; \
588
589
  \
590
+ DECL_GL_FUNC_PTR(GLvoid,gl##_name_,(GLuint,GLint,_type_ *)); \
591
+ DECL_GL_FUNC_PTR(GLvoid,glGetActiveUniformARB,(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*)); \
589
592
  LOAD_GL_FUNC(gl##_name_, "GL_ARB_shader_objects"); \
590
593
  LOAD_GL_FUNC(glGetActiveUniformARB, "GL_ARB_shader_objects"); \
591
594
  program = (GLuint)NUM2UINT(arg1); \
@@ -608,13 +611,13 @@ GETUNIFORM_FUNC(GetUniformfvARB,GLfloat)
608
611
  GETUNIFORM_FUNC(GetUniformivARB,GLint)
609
612
  #undef GETUNIFORM_FUNC
610
613
 
611
- static GLint (APIENTRY * fptr_glGetUniformLocationARB)(GLuint,const GLchar*);
612
614
  static VALUE
613
615
  gl_GetUniformLocationARB(obj,arg1,arg2)
614
616
  VALUE obj,arg1,arg2;
615
617
  {
616
618
  GLuint program;
617
619
  GLint ret;
620
+ DECL_GL_FUNC_PTR(GLint,glGetUniformLocationARB,(GLuint,const GLchar*));
618
621
  LOAD_GL_FUNC(glGetUniformLocationARB, "GL_ARB_shader_objects");
619
622
  program=(GLuint)NUM2UINT(arg1);
620
623
  Check_Type(arg2,T_STRING);
@@ -623,7 +626,6 @@ VALUE obj,arg1,arg2;
623
626
  return INT2NUM(ret);
624
627
  }
625
628
 
626
- static void (APIENTRY * fptr_glGetAttachedObjectsARB)(GLuint,GLsizei,GLsizei *,GLuint *);
627
629
  static VALUE
628
630
  gl_GetAttachedObjectsARB(obj,arg1)
629
631
  VALUE obj,arg1;
@@ -632,6 +634,8 @@ VALUE obj,arg1;
632
634
  GLint shaders_num = 0;
633
635
  GLuint *shaders;
634
636
  GLsizei count = 0;
637
+ DECL_GL_FUNC_PTR(GLvoid,glGetAttachedObjectsARB,(GLuint,GLsizei,GLsizei *,GLuint *));
638
+ DECL_GL_FUNC_PTR(GLvoid,glGetObjectParameterivARB,(GLuint,GLenum,GLint *));
635
639
  LOAD_GL_FUNC(glGetAttachedObjectsARB, "GL_ARB_shader_objects");
636
640
  LOAD_GL_FUNC(glGetObjectParameterivARB, "GL_ARB_shader_objects");
637
641
  program = (GLuint)NUM2UINT(arg1);
@@ -647,13 +651,13 @@ VALUE obj,arg1;
647
651
 
648
652
  /* #31 GL_ARB_vertex_shader */
649
653
 
650
- static void (APIENTRY * fptr_glBindAttribLocationARB)(GLuint,GLuint,GLchar *);
651
654
  static VALUE
652
655
  gl_BindAttribLocationARB(obj,arg1,arg2,arg3)
653
656
  VALUE obj,arg1,arg2,arg3;
654
657
  {
655
658
  GLuint program;
656
659
  GLuint index;
660
+ DECL_GL_FUNC_PTR(GLvoid,glBindAttribLocationARB,(GLuint,GLuint,GLchar *));
657
661
  LOAD_GL_FUNC(glBindAttribLocationARB, "GL_ARB_vertex_shader");
658
662
  program = (GLuint)NUM2UINT(arg1);
659
663
  index = (GLuint)NUM2UINT(arg2);
@@ -663,7 +667,6 @@ VALUE obj,arg1,arg2,arg3;
663
667
  return Qnil;
664
668
  }
665
669
 
666
- static void (APIENTRY * fptr_glGetActiveAttribARB)(GLuint,GLuint,GLsizei,GLsizei *,GLint *,GLenum *,GLchar *);
667
670
  static VALUE
668
671
  gl_GetActiveAttribARB(obj,arg1,arg2)
669
672
  VALUE obj,arg1,arg2;
@@ -676,6 +679,8 @@ VALUE obj,arg1,arg2;
676
679
  GLenum attrib_type = 0;
677
680
  VALUE buffer;
678
681
  VALUE retary;
682
+ DECL_GL_FUNC_PTR(GLvoid,glGetActiveAttribARB,(GLuint,GLuint,GLsizei,GLsizei *,GLint *,GLenum *,GLchar *));
683
+ DECL_GL_FUNC_PTR(GLvoid,glGetObjectParameterivARB,(GLuint,GLenum,GLint *));
679
684
  LOAD_GL_FUNC(glGetActiveAttribARB, "GL_ARB_vertex_shader");
680
685
  LOAD_GL_FUNC(glGetObjectParameterivARB, "GL_ARB_vertex_shader");
681
686
  program = (GLuint)NUM2UINT(arg1);
@@ -697,13 +702,13 @@ VALUE obj,arg1,arg2;
697
702
  return retary;
698
703
  }
699
704
 
700
- static GLint (APIENTRY * fptr_glGetAttribLocationARB)(GLuint,const GLchar*);
701
705
  static VALUE
702
706
  gl_GetAttribLocationARB(obj,arg1,arg2)
703
707
  VALUE obj,arg1,arg2;
704
708
  {
705
709
  GLuint program;
706
710
  GLint ret;
711
+ DECL_GL_FUNC_PTR(GLint,glGetAttribLocationARB,(GLuint,const GLchar*));
707
712
  LOAD_GL_FUNC(glGetAttribLocationARB, "GL_ARB_shader_objects");
708
713
  program=(GLuint)NUM2UINT(arg1);
709
714
  Check_Type(arg2,T_STRING);
@@ -716,160 +721,160 @@ VALUE obj,arg1,arg2;
716
721
  /* #39 GL_ARB_color_buffer_float */
717
722
  GL_FUNC_LOAD_2(ClampColorARB,GLvoid, GLenum,GLenum, "GL_ARB_color_buffer_float")
718
723
 
719
- void gl_init_functions_ext_arb(VALUE module)
724
+ void gl_init_functions_ext_arb(VALUE klass)
720
725
  {
721
726
  /* #3 GL_ARB_transpose_matrix */
722
- rb_define_module_function(module, "glLoadTransposeMatrixfARB", gl_LoadTransposeMatrixfARB, 1);
723
- rb_define_module_function(module, "glLoadTransposeMatrixdARB", gl_LoadTransposeMatrixdARB, 1);
724
- rb_define_module_function(module, "glMultTransposeMatrixfARB", gl_MultTransposeMatrixfARB, 1);
725
- rb_define_module_function(module, "glMultTransposeMatrixdARB", gl_MultTransposeMatrixdARB, 1);
727
+ rb_define_method(klass, "glLoadTransposeMatrixfARB", gl_LoadTransposeMatrixfARB, 1);
728
+ rb_define_method(klass, "glLoadTransposeMatrixdARB", gl_LoadTransposeMatrixdARB, 1);
729
+ rb_define_method(klass, "glMultTransposeMatrixfARB", gl_MultTransposeMatrixfARB, 1);
730
+ rb_define_method(klass, "glMultTransposeMatrixdARB", gl_MultTransposeMatrixdARB, 1);
726
731
 
727
732
  /* #5 GL_ARB_multisample */
728
- rb_define_module_function(module, "glSampleCoverageARB", gl_SampleCoverageARB, 2);
733
+ rb_define_method(klass, "glSampleCoverageARB", gl_SampleCoverageARB, 2);
729
734
 
730
735
  /* #14 GL_ARB_point_parameters */
731
- rb_define_module_function(module, "glPointParameterfARB", gl_PointParameterfARB, 2);
732
- rb_define_module_function(module, "glPointParameterfvARB", gl_PointParameterfvARB, 2);
736
+ rb_define_method(klass, "glPointParameterfARB", gl_PointParameterfARB, 2);
737
+ rb_define_method(klass, "glPointParameterfvARB", gl_PointParameterfvARB, 2);
733
738
 
734
739
  /* #26 GL_ARB_window_pos */
735
- rb_define_module_function(module, "glWindowPos2dARB", gl_WindowPos2dARB, 2);
736
- rb_define_module_function(module, "glWindowPos2fARB", gl_WindowPos2fARB, 2);
737
- rb_define_module_function(module, "glWindowPos2iARB", gl_WindowPos2iARB, 2);
738
- rb_define_module_function(module, "glWindowPos2sARB", gl_WindowPos2sARB, 2);
739
- rb_define_module_function(module, "glWindowPos3dARB", gl_WindowPos3dARB, 3);
740
- rb_define_module_function(module, "glWindowPos3fARB", gl_WindowPos3fARB, 3);
741
- rb_define_module_function(module, "glWindowPos3iARB", gl_WindowPos3iARB, 3);
742
- rb_define_module_function(module, "glWindowPos3sARB", gl_WindowPos3sARB, 3);
743
-
744
- rb_define_module_function(module, "glWindowPos2dvARB", gl_WindowPos2dvARB, 1);
745
- rb_define_module_function(module, "glWindowPos2fvARB", gl_WindowPos2fvARB, 1);
746
- rb_define_module_function(module, "glWindowPos2ivARB", gl_WindowPos2ivARB, 1);
747
- rb_define_module_function(module, "glWindowPos2svARB", gl_WindowPos2svARB, 1);
748
- rb_define_module_function(module, "glWindowPos3dvARB", gl_WindowPos3dvARB, 1);
749
- rb_define_module_function(module, "glWindowPos3fvARB", gl_WindowPos3fvARB, 1);
750
- rb_define_module_function(module, "glWindowPos3ivARB", gl_WindowPos3ivARB, 1);
751
- rb_define_module_function(module, "glWindowPos3svARB", gl_WindowPos3svARB, 1);
740
+ rb_define_method(klass, "glWindowPos2dARB", gl_WindowPos2dARB, 2);
741
+ rb_define_method(klass, "glWindowPos2fARB", gl_WindowPos2fARB, 2);
742
+ rb_define_method(klass, "glWindowPos2iARB", gl_WindowPos2iARB, 2);
743
+ rb_define_method(klass, "glWindowPos2sARB", gl_WindowPos2sARB, 2);
744
+ rb_define_method(klass, "glWindowPos3dARB", gl_WindowPos3dARB, 3);
745
+ rb_define_method(klass, "glWindowPos3fARB", gl_WindowPos3fARB, 3);
746
+ rb_define_method(klass, "glWindowPos3iARB", gl_WindowPos3iARB, 3);
747
+ rb_define_method(klass, "glWindowPos3sARB", gl_WindowPos3sARB, 3);
748
+
749
+ rb_define_method(klass, "glWindowPos2dvARB", gl_WindowPos2dvARB, 1);
750
+ rb_define_method(klass, "glWindowPos2fvARB", gl_WindowPos2fvARB, 1);
751
+ rb_define_method(klass, "glWindowPos2ivARB", gl_WindowPos2ivARB, 1);
752
+ rb_define_method(klass, "glWindowPos2svARB", gl_WindowPos2svARB, 1);
753
+ rb_define_method(klass, "glWindowPos3dvARB", gl_WindowPos3dvARB, 1);
754
+ rb_define_method(klass, "glWindowPos3fvARB", gl_WindowPos3fvARB, 1);
755
+ rb_define_method(klass, "glWindowPos3ivARB", gl_WindowPos3ivARB, 1);
756
+ rb_define_method(klass, "glWindowPos3svARB", gl_WindowPos3svARB, 1);
752
757
 
753
758
  /* #26 GL_ARB_vertex_program */
754
- rb_define_module_function(module, "glProgramStringARB", gl_ProgramStringARB, 3);
755
- rb_define_module_function(module, "glGetProgramStringARB", gl_GetProgramStringARB, 2);
756
- rb_define_module_function(module, "glGetProgramivARB", gl_GetProgramivARB, 2);
757
- rb_define_module_function(module, "glBindProgramARB", gl_BindProgramARB, 2);
758
- rb_define_module_function(module, "glGenProgramsARB", gl_GenProgramsARB, 1);
759
- rb_define_module_function(module, "glDeleteProgramsARB", gl_DeleteProgramsARB, 1);
760
- rb_define_module_function(module, "glIsProgramARB", gl_IsProgramARB, 1);
761
- rb_define_module_function(module, "glEnableVertexAttribArrayARB", gl_EnableVertexAttribArrayARB, 1);
762
- rb_define_module_function(module, "glDisableVertexAttribArrayARB", gl_DisableVertexAttribArrayARB, 1);
763
- rb_define_module_function(module, "glVertexAttribPointerARB", gl_VertexAttribPointerARB, 6);
764
- rb_define_module_function(module, "glGetVertexAttribPointervARB", gl_GetVertexAttribPointervARB, 1);
765
- rb_define_module_function(module, "glProgramEnvParameter4dARB", gl_ProgramEnvParameter4dARB, 6);
766
- rb_define_module_function(module, "glProgramEnvParameter4fARB", gl_ProgramEnvParameter4fARB, 6);
767
- rb_define_module_function(module, "glProgramLocalParameter4dARB", gl_ProgramLocalParameter4dARB, 6);
768
- rb_define_module_function(module, "glProgramLocalParameter4fARB", gl_ProgramLocalParameter4fARB, 6);
769
- rb_define_module_function(module, "glProgramEnvParameter4dvARB", gl_ProgramEnvParameter4dvARB, 3);
770
- rb_define_module_function(module, "glProgramEnvParameter4fvARB", gl_ProgramEnvParameter4fvARB, 3);
771
- rb_define_module_function(module, "glProgramLocalParameter4dvARB", gl_ProgramLocalParameter4dvARB, 3);
772
- rb_define_module_function(module, "glProgramLocalParameter4fvARB", gl_ProgramLocalParameter4fvARB, 3);
773
- rb_define_module_function(module, "glGetProgramEnvParameterdvARB", gl_GetProgramEnvParameterdvARB, 2);
774
- rb_define_module_function(module, "glGetProgramEnvParameterfvARB", gl_GetProgramEnvParameterfvARB, 2);
775
- rb_define_module_function(module, "glGetProgramLocalParameterdvARB", gl_GetProgramLocalParameterdvARB, 2);
776
- rb_define_module_function(module, "glGetProgramLocalParameterfvARB", gl_GetProgramLocalParameterfvARB, 2);
777
- rb_define_module_function(module, "glVertexAttrib1dARB", gl_VertexAttrib1dARB, 2);
778
- rb_define_module_function(module, "glVertexAttrib1fARB", gl_VertexAttrib1fARB, 2);
779
- rb_define_module_function(module, "glVertexAttrib1sARB", gl_VertexAttrib1sARB, 2);
780
- rb_define_module_function(module, "glVertexAttrib2dARB", gl_VertexAttrib2dARB, 3);
781
- rb_define_module_function(module, "glVertexAttrib2fARB", gl_VertexAttrib2fARB, 3);
782
- rb_define_module_function(module, "glVertexAttrib2sARB", gl_VertexAttrib2sARB, 3);
783
- rb_define_module_function(module, "glVertexAttrib3dARB", gl_VertexAttrib3dARB, 4);
784
- rb_define_module_function(module, "glVertexAttrib3fARB", gl_VertexAttrib3fARB, 4);
785
- rb_define_module_function(module, "glVertexAttrib3sARB", gl_VertexAttrib3sARB, 4);
786
- rb_define_module_function(module, "glVertexAttrib4NbvARB", gl_VertexAttrib4NbvARB, 2);
787
- rb_define_module_function(module, "glVertexAttrib4NivARB", gl_VertexAttrib4NivARB, 2);
788
- rb_define_module_function(module, "glVertexAttrib4NsvARB", gl_VertexAttrib4NsvARB, 2);
789
- rb_define_module_function(module, "glVertexAttrib4NubARB", gl_VertexAttrib4NubARB, 5);
790
- rb_define_module_function(module, "glVertexAttrib4NubvARB", gl_VertexAttrib4NubvARB, 2);
791
- rb_define_module_function(module, "glVertexAttrib4NuivARB", gl_VertexAttrib4NuivARB, 2);
792
- rb_define_module_function(module, "glVertexAttrib4NusvARB", gl_VertexAttrib4NusvARB, 2);
793
- rb_define_module_function(module, "glVertexAttrib4bvARB", gl_VertexAttrib4bvARB, 2);
794
- rb_define_module_function(module, "glVertexAttrib4dARB", gl_VertexAttrib4dARB, 5);
795
- rb_define_module_function(module, "glVertexAttrib4fARB", gl_VertexAttrib4fARB, 5);
796
- rb_define_module_function(module, "glVertexAttrib4ivARB", gl_VertexAttrib4ivARB, 2);
797
- rb_define_module_function(module, "glVertexAttrib4sARB", gl_VertexAttrib4sARB, 5);
798
- rb_define_module_function(module, "glVertexAttrib4ubvARB", gl_VertexAttrib4ubvARB, 2);
799
- rb_define_module_function(module, "glVertexAttrib4uivARB", gl_VertexAttrib4uivARB, 2);
800
- rb_define_module_function(module, "glVertexAttrib4usvARB", gl_VertexAttrib4usvARB, 2);
801
- rb_define_module_function(module, "glVertexAttrib1dvARB", gl_VertexAttrib1dvARB, 2);
802
- rb_define_module_function(module, "glVertexAttrib1fvARB", gl_VertexAttrib1fvARB, 2);
803
- rb_define_module_function(module, "glVertexAttrib1svARB", gl_VertexAttrib1svARB, 2);
804
- rb_define_module_function(module, "glVertexAttrib2dvARB", gl_VertexAttrib2dvARB, 2);
805
- rb_define_module_function(module, "glVertexAttrib2fvARB", gl_VertexAttrib2fvARB, 2);
806
- rb_define_module_function(module, "glVertexAttrib2svARB", gl_VertexAttrib2svARB, 2);
807
- rb_define_module_function(module, "glVertexAttrib3dvARB", gl_VertexAttrib3dvARB, 2);
808
- rb_define_module_function(module, "glVertexAttrib3fvARB", gl_VertexAttrib3fvARB, 2);
809
- rb_define_module_function(module, "glVertexAttrib3svARB", gl_VertexAttrib3svARB, 2);
810
- rb_define_module_function(module, "glVertexAttrib4dvARB", gl_VertexAttrib4dvARB, 2);
811
- rb_define_module_function(module, "glVertexAttrib4fvARB", gl_VertexAttrib4fvARB, 2);
812
- rb_define_module_function(module, "glVertexAttrib4svARB", gl_VertexAttrib4svARB, 2);
813
- rb_define_module_function(module, "glGetVertexAttribdvARB", gl_GetVertexAttribdvARB, 2);
814
- rb_define_module_function(module, "glGetVertexAttribfvARB", gl_GetVertexAttribfvARB, 2);
815
- rb_define_module_function(module, "glGetVertexAttribivARB", gl_GetVertexAttribivARB, 2);
759
+ rb_define_method(klass, "glProgramStringARB", gl_ProgramStringARB, 3);
760
+ rb_define_method(klass, "glGetProgramStringARB", gl_GetProgramStringARB, 2);
761
+ rb_define_method(klass, "glGetProgramivARB", gl_GetProgramivARB, 2);
762
+ rb_define_method(klass, "glBindProgramARB", gl_BindProgramARB, 2);
763
+ rb_define_method(klass, "glGenProgramsARB", gl_GenProgramsARB, 1);
764
+ rb_define_method(klass, "glDeleteProgramsARB", gl_DeleteProgramsARB, 1);
765
+ rb_define_method(klass, "glIsProgramARB", gl_IsProgramARB, 1);
766
+ rb_define_method(klass, "glEnableVertexAttribArrayARB", gl_EnableVertexAttribArrayARB, 1);
767
+ rb_define_method(klass, "glDisableVertexAttribArrayARB", gl_DisableVertexAttribArrayARB, 1);
768
+ rb_define_method(klass, "glVertexAttribPointerARB", gl_VertexAttribPointerARB, 6);
769
+ rb_define_method(klass, "glGetVertexAttribPointervARB", gl_GetVertexAttribPointervARB, 1);
770
+ rb_define_method(klass, "glProgramEnvParameter4dARB", gl_ProgramEnvParameter4dARB, 6);
771
+ rb_define_method(klass, "glProgramEnvParameter4fARB", gl_ProgramEnvParameter4fARB, 6);
772
+ rb_define_method(klass, "glProgramLocalParameter4dARB", gl_ProgramLocalParameter4dARB, 6);
773
+ rb_define_method(klass, "glProgramLocalParameter4fARB", gl_ProgramLocalParameter4fARB, 6);
774
+ rb_define_method(klass, "glProgramEnvParameter4dvARB", gl_ProgramEnvParameter4dvARB, 3);
775
+ rb_define_method(klass, "glProgramEnvParameter4fvARB", gl_ProgramEnvParameter4fvARB, 3);
776
+ rb_define_method(klass, "glProgramLocalParameter4dvARB", gl_ProgramLocalParameter4dvARB, 3);
777
+ rb_define_method(klass, "glProgramLocalParameter4fvARB", gl_ProgramLocalParameter4fvARB, 3);
778
+ rb_define_method(klass, "glGetProgramEnvParameterdvARB", gl_GetProgramEnvParameterdvARB, 2);
779
+ rb_define_method(klass, "glGetProgramEnvParameterfvARB", gl_GetProgramEnvParameterfvARB, 2);
780
+ rb_define_method(klass, "glGetProgramLocalParameterdvARB", gl_GetProgramLocalParameterdvARB, 2);
781
+ rb_define_method(klass, "glGetProgramLocalParameterfvARB", gl_GetProgramLocalParameterfvARB, 2);
782
+ rb_define_method(klass, "glVertexAttrib1dARB", gl_VertexAttrib1dARB, 2);
783
+ rb_define_method(klass, "glVertexAttrib1fARB", gl_VertexAttrib1fARB, 2);
784
+ rb_define_method(klass, "glVertexAttrib1sARB", gl_VertexAttrib1sARB, 2);
785
+ rb_define_method(klass, "glVertexAttrib2dARB", gl_VertexAttrib2dARB, 3);
786
+ rb_define_method(klass, "glVertexAttrib2fARB", gl_VertexAttrib2fARB, 3);
787
+ rb_define_method(klass, "glVertexAttrib2sARB", gl_VertexAttrib2sARB, 3);
788
+ rb_define_method(klass, "glVertexAttrib3dARB", gl_VertexAttrib3dARB, 4);
789
+ rb_define_method(klass, "glVertexAttrib3fARB", gl_VertexAttrib3fARB, 4);
790
+ rb_define_method(klass, "glVertexAttrib3sARB", gl_VertexAttrib3sARB, 4);
791
+ rb_define_method(klass, "glVertexAttrib4NbvARB", gl_VertexAttrib4NbvARB, 2);
792
+ rb_define_method(klass, "glVertexAttrib4NivARB", gl_VertexAttrib4NivARB, 2);
793
+ rb_define_method(klass, "glVertexAttrib4NsvARB", gl_VertexAttrib4NsvARB, 2);
794
+ rb_define_method(klass, "glVertexAttrib4NubARB", gl_VertexAttrib4NubARB, 5);
795
+ rb_define_method(klass, "glVertexAttrib4NubvARB", gl_VertexAttrib4NubvARB, 2);
796
+ rb_define_method(klass, "glVertexAttrib4NuivARB", gl_VertexAttrib4NuivARB, 2);
797
+ rb_define_method(klass, "glVertexAttrib4NusvARB", gl_VertexAttrib4NusvARB, 2);
798
+ rb_define_method(klass, "glVertexAttrib4bvARB", gl_VertexAttrib4bvARB, 2);
799
+ rb_define_method(klass, "glVertexAttrib4dARB", gl_VertexAttrib4dARB, 5);
800
+ rb_define_method(klass, "glVertexAttrib4fARB", gl_VertexAttrib4fARB, 5);
801
+ rb_define_method(klass, "glVertexAttrib4ivARB", gl_VertexAttrib4ivARB, 2);
802
+ rb_define_method(klass, "glVertexAttrib4sARB", gl_VertexAttrib4sARB, 5);
803
+ rb_define_method(klass, "glVertexAttrib4ubvARB", gl_VertexAttrib4ubvARB, 2);
804
+ rb_define_method(klass, "glVertexAttrib4uivARB", gl_VertexAttrib4uivARB, 2);
805
+ rb_define_method(klass, "glVertexAttrib4usvARB", gl_VertexAttrib4usvARB, 2);
806
+ rb_define_method(klass, "glVertexAttrib1dvARB", gl_VertexAttrib1dvARB, 2);
807
+ rb_define_method(klass, "glVertexAttrib1fvARB", gl_VertexAttrib1fvARB, 2);
808
+ rb_define_method(klass, "glVertexAttrib1svARB", gl_VertexAttrib1svARB, 2);
809
+ rb_define_method(klass, "glVertexAttrib2dvARB", gl_VertexAttrib2dvARB, 2);
810
+ rb_define_method(klass, "glVertexAttrib2fvARB", gl_VertexAttrib2fvARB, 2);
811
+ rb_define_method(klass, "glVertexAttrib2svARB", gl_VertexAttrib2svARB, 2);
812
+ rb_define_method(klass, "glVertexAttrib3dvARB", gl_VertexAttrib3dvARB, 2);
813
+ rb_define_method(klass, "glVertexAttrib3fvARB", gl_VertexAttrib3fvARB, 2);
814
+ rb_define_method(klass, "glVertexAttrib3svARB", gl_VertexAttrib3svARB, 2);
815
+ rb_define_method(klass, "glVertexAttrib4dvARB", gl_VertexAttrib4dvARB, 2);
816
+ rb_define_method(klass, "glVertexAttrib4fvARB", gl_VertexAttrib4fvARB, 2);
817
+ rb_define_method(klass, "glVertexAttrib4svARB", gl_VertexAttrib4svARB, 2);
818
+ rb_define_method(klass, "glGetVertexAttribdvARB", gl_GetVertexAttribdvARB, 2);
819
+ rb_define_method(klass, "glGetVertexAttribfvARB", gl_GetVertexAttribfvARB, 2);
820
+ rb_define_method(klass, "glGetVertexAttribivARB", gl_GetVertexAttribivARB, 2);
816
821
 
817
822
  /* #29 GL_ARB_occlusion_query */
818
- rb_define_module_function(module, "glGenQueriesARB", gl_GenQueriesARB, 1);
819
- rb_define_module_function(module, "glDeleteQueriesARB", gl_DeleteQueriesARB, 1);
820
- rb_define_module_function(module, "glIsQueryARB", gl_IsQueryARB, 1);
821
- rb_define_module_function(module, "glBeginQueryARB", gl_BeginQueryARB, 2);
822
- rb_define_module_function(module, "glEndQueryARB", gl_EndQueryARB, 1);
823
- rb_define_module_function(module, "glGetQueryivARB", gl_GetQueryivARB, 2);
824
- rb_define_module_function(module, "glGetQueryObjectivARB", gl_GetQueryObjectivARB, 2);
825
- rb_define_module_function(module, "glGetQueryObjectuivARB", gl_GetQueryObjectuivARB, 2);
823
+ rb_define_method(klass, "glGenQueriesARB", gl_GenQueriesARB, 1);
824
+ rb_define_method(klass, "glDeleteQueriesARB", gl_DeleteQueriesARB, 1);
825
+ rb_define_method(klass, "glIsQueryARB", gl_IsQueryARB, 1);
826
+ rb_define_method(klass, "glBeginQueryARB", gl_BeginQueryARB, 2);
827
+ rb_define_method(klass, "glEndQueryARB", gl_EndQueryARB, 1);
828
+ rb_define_method(klass, "glGetQueryivARB", gl_GetQueryivARB, 2);
829
+ rb_define_method(klass, "glGetQueryObjectivARB", gl_GetQueryObjectivARB, 2);
830
+ rb_define_method(klass, "glGetQueryObjectuivARB", gl_GetQueryObjectuivARB, 2);
826
831
 
827
832
  /* #30 GL_ARB_shader_objects */
828
- rb_define_module_function(module, "glDeleteObjectARB", gl_DeleteObjectARB, 1);
829
- rb_define_module_function(module, "glGetHandleARB", gl_GetHandleARB, 1);
830
- rb_define_module_function(module, "glDetachObjectARB", gl_DetachObjectARB, 2);
831
- rb_define_module_function(module, "glCreateShaderObjectARB", gl_CreateShaderObjectARB, 1);
832
- rb_define_module_function(module, "glShaderSourceARB", gl_ShaderSourceARB, 2);
833
- rb_define_module_function(module, "glCompileShaderARB", gl_CompileShaderARB, 1);
834
- rb_define_module_function(module, "glCreateProgramObjectARB", gl_CreateProgramObjectARB, 0);
835
- rb_define_module_function(module, "glAttachObjectARB", gl_AttachObjectARB, 2);
836
- rb_define_module_function(module, "glLinkProgramARB", gl_LinkProgramARB, 1);
837
- rb_define_module_function(module, "glUseProgramObjectARB", gl_UseProgramObjectARB, 1);
838
- rb_define_module_function(module, "glValidateProgramARB", gl_ValidateProgramARB, 1);
839
- rb_define_module_function(module, "glUniform1fARB", gl_Uniform1fARB, 2);
840
- rb_define_module_function(module, "glUniform2fARB", gl_Uniform2fARB, 3);
841
- rb_define_module_function(module, "glUniform3fARB", gl_Uniform3fARB, 4);
842
- rb_define_module_function(module, "glUniform4fARB", gl_Uniform4fARB, 5);
843
- rb_define_module_function(module, "glUniform1iARB", gl_Uniform1iARB, 2);
844
- rb_define_module_function(module, "glUniform2iARB", gl_Uniform2iARB, 3);
845
- rb_define_module_function(module, "glUniform3iARB", gl_Uniform3iARB, 4);
846
- rb_define_module_function(module, "glUniform4iARB", gl_Uniform4iARB, 5);
847
- rb_define_module_function(module, "glUniform1fvARB", gl_Uniform1fvARB, 2);
848
- rb_define_module_function(module, "glUniform2fvARB", gl_Uniform2fvARB, 2);
849
- rb_define_module_function(module, "glUniform3fvARB", gl_Uniform3fvARB, 2);
850
- rb_define_module_function(module, "glUniform4fvARB", gl_Uniform4fvARB, 2);
851
- rb_define_module_function(module, "glUniform1ivARB", gl_Uniform1ivARB, 2);
852
- rb_define_module_function(module, "glUniform2ivARB", gl_Uniform2ivARB, 2);
853
- rb_define_module_function(module, "glUniform3ivARB", gl_Uniform3ivARB, 2);
854
- rb_define_module_function(module, "glUniform4ivARB", gl_Uniform4ivARB, 2);
855
- rb_define_module_function(module, "glUniformMatrix2fvARB", gl_UniformMatrix2fvARB, 3);
856
- rb_define_module_function(module, "glUniformMatrix3fvARB", gl_UniformMatrix3fvARB, 3);
857
- rb_define_module_function(module, "glUniformMatrix4fvARB", gl_UniformMatrix4fvARB, 3);
858
- rb_define_module_function(module, "glGetObjectParameterfvARB", gl_GetObjectParameterfvARB, 2);
859
- rb_define_module_function(module, "glGetObjectParameterivARB", gl_GetObjectParameterivARB, 2);
860
- rb_define_module_function(module, "glGetInfoLogARB", gl_GetInfoLogARB, 1);
861
- rb_define_module_function(module, "glGetShaderSourceARB", gl_GetShaderSourceARB, 1);
862
- rb_define_module_function(module, "glGetAttachedObjectsARB", gl_GetAttachedObjectsARB, 1);
863
- rb_define_module_function(module, "glGetUniformLocationARB", gl_GetUniformLocationARB, 2);
864
- rb_define_module_function(module, "glGetActiveUniformARB", gl_GetActiveUniformARB, 2);
865
- rb_define_module_function(module, "glGetUniformfvARB", gl_GetUniformfvARB, 2);
866
- rb_define_module_function(module, "glGetUniformivARB", gl_GetUniformivARB, 2);
833
+ rb_define_method(klass, "glDeleteObjectARB", gl_DeleteObjectARB, 1);
834
+ rb_define_method(klass, "glGetHandleARB", gl_GetHandleARB, 1);
835
+ rb_define_method(klass, "glDetachObjectARB", gl_DetachObjectARB, 2);
836
+ rb_define_method(klass, "glCreateShaderObjectARB", gl_CreateShaderObjectARB, 1);
837
+ rb_define_method(klass, "glShaderSourceARB", gl_ShaderSourceARB, 2);
838
+ rb_define_method(klass, "glCompileShaderARB", gl_CompileShaderARB, 1);
839
+ rb_define_method(klass, "glCreateProgramObjectARB", gl_CreateProgramObjectARB, 0);
840
+ rb_define_method(klass, "glAttachObjectARB", gl_AttachObjectARB, 2);
841
+ rb_define_method(klass, "glLinkProgramARB", gl_LinkProgramARB, 1);
842
+ rb_define_method(klass, "glUseProgramObjectARB", gl_UseProgramObjectARB, 1);
843
+ rb_define_method(klass, "glValidateProgramARB", gl_ValidateProgramARB, 1);
844
+ rb_define_method(klass, "glUniform1fARB", gl_Uniform1fARB, 2);
845
+ rb_define_method(klass, "glUniform2fARB", gl_Uniform2fARB, 3);
846
+ rb_define_method(klass, "glUniform3fARB", gl_Uniform3fARB, 4);
847
+ rb_define_method(klass, "glUniform4fARB", gl_Uniform4fARB, 5);
848
+ rb_define_method(klass, "glUniform1iARB", gl_Uniform1iARB, 2);
849
+ rb_define_method(klass, "glUniform2iARB", gl_Uniform2iARB, 3);
850
+ rb_define_method(klass, "glUniform3iARB", gl_Uniform3iARB, 4);
851
+ rb_define_method(klass, "glUniform4iARB", gl_Uniform4iARB, 5);
852
+ rb_define_method(klass, "glUniform1fvARB", gl_Uniform1fvARB, 2);
853
+ rb_define_method(klass, "glUniform2fvARB", gl_Uniform2fvARB, 2);
854
+ rb_define_method(klass, "glUniform3fvARB", gl_Uniform3fvARB, 2);
855
+ rb_define_method(klass, "glUniform4fvARB", gl_Uniform4fvARB, 2);
856
+ rb_define_method(klass, "glUniform1ivARB", gl_Uniform1ivARB, 2);
857
+ rb_define_method(klass, "glUniform2ivARB", gl_Uniform2ivARB, 2);
858
+ rb_define_method(klass, "glUniform3ivARB", gl_Uniform3ivARB, 2);
859
+ rb_define_method(klass, "glUniform4ivARB", gl_Uniform4ivARB, 2);
860
+ rb_define_method(klass, "glUniformMatrix2fvARB", gl_UniformMatrix2fvARB, 3);
861
+ rb_define_method(klass, "glUniformMatrix3fvARB", gl_UniformMatrix3fvARB, 3);
862
+ rb_define_method(klass, "glUniformMatrix4fvARB", gl_UniformMatrix4fvARB, 3);
863
+ rb_define_method(klass, "glGetObjectParameterfvARB", gl_GetObjectParameterfvARB, 2);
864
+ rb_define_method(klass, "glGetObjectParameterivARB", gl_GetObjectParameterivARB, 2);
865
+ rb_define_method(klass, "glGetInfoLogARB", gl_GetInfoLogARB, 1);
866
+ rb_define_method(klass, "glGetShaderSourceARB", gl_GetShaderSourceARB, 1);
867
+ rb_define_method(klass, "glGetAttachedObjectsARB", gl_GetAttachedObjectsARB, 1);
868
+ rb_define_method(klass, "glGetUniformLocationARB", gl_GetUniformLocationARB, 2);
869
+ rb_define_method(klass, "glGetActiveUniformARB", gl_GetActiveUniformARB, 2);
870
+ rb_define_method(klass, "glGetUniformfvARB", gl_GetUniformfvARB, 2);
871
+ rb_define_method(klass, "glGetUniformivARB", gl_GetUniformivARB, 2);
867
872
 
868
873
  /* #31 GL_ARB_vertex_shader */
869
- rb_define_module_function(module, "glBindAttribLocationARB", gl_BindAttribLocationARB, 3);
870
- rb_define_module_function(module, "glGetActiveAttribARB", gl_GetActiveAttribARB, 2);
871
- rb_define_module_function(module, "glGetAttribLocationARB", gl_GetAttribLocationARB, 2);
874
+ rb_define_method(klass, "glBindAttribLocationARB", gl_BindAttribLocationARB, 3);
875
+ rb_define_method(klass, "glGetActiveAttribARB", gl_GetActiveAttribARB, 2);
876
+ rb_define_method(klass, "glGetAttribLocationARB", gl_GetAttribLocationARB, 2);
872
877
 
873
878
  /* #39 GL_ARB_color_buffer_float */
874
- rb_define_module_function(module, "glClampColorARB", gl_ClampColorARB, 2);
879
+ rb_define_method(klass, "glClampColorARB", gl_ClampColorARB, 2);
875
880
  }