opengl 0.8.0-x86-mingw32 → 0.9.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +1 -0
  3. data.tar.gz.sig +2 -0
  4. data/.gitignore +2 -1
  5. data/.travis.yml +19 -0
  6. data/History.rdoc +26 -0
  7. data/Manifest.txt +3 -23
  8. data/README.rdoc +43 -37
  9. data/Rakefile +6 -62
  10. data/examples/NeHe/nehe_lesson02.rb +3 -2
  11. data/examples/NeHe/nehe_lesson03.rb +3 -2
  12. data/examples/NeHe/nehe_lesson04.rb +3 -1
  13. data/examples/NeHe/nehe_lesson05.rb +4 -1
  14. data/examples/NeHe/nehe_lesson06.rb +9 -6
  15. data/examples/NeHe/nehe_lesson07.rb +9 -6
  16. data/examples/NeHe/nehe_lesson08.rb +9 -6
  17. data/examples/NeHe/nehe_lesson09.rb +10 -6
  18. data/examples/NeHe/nehe_lesson11.rb +9 -6
  19. data/examples/NeHe/nehe_lesson12.rb +9 -6
  20. data/examples/NeHe/nehe_lesson16.rb +50 -47
  21. data/examples/NeHe/nehe_lesson19.rb +10 -7
  22. data/examples/NeHe/nehe_lesson36.rb +234 -229
  23. data/examples/OrangeBook/brick.rb +227 -225
  24. data/examples/OrangeBook/particle.rb +233 -231
  25. data/examples/RedBook/aapoly.rb +71 -70
  26. data/examples/RedBook/aargb.rb +54 -52
  27. data/examples/RedBook/accanti.rb +96 -94
  28. data/examples/RedBook/accpersp.rb +106 -104
  29. data/examples/RedBook/alpha.rb +54 -52
  30. data/examples/RedBook/alpha3D.rb +90 -88
  31. data/examples/RedBook/bezcurve.rb +48 -46
  32. data/examples/RedBook/bezmesh.rb +71 -69
  33. data/examples/RedBook/checker.rb +57 -55
  34. data/examples/RedBook/clip.rb +41 -39
  35. data/examples/RedBook/colormat.rb +72 -70
  36. data/examples/RedBook/cube.rb +39 -37
  37. data/examples/RedBook/depthcue.rb +37 -35
  38. data/examples/RedBook/dof.rb +110 -109
  39. data/examples/RedBook/double.rb +40 -38
  40. data/examples/RedBook/drawf.rb +30 -28
  41. data/examples/RedBook/feedback.rb +79 -77
  42. data/examples/RedBook/fog.rb +90 -89
  43. data/examples/RedBook/font.rb +78 -76
  44. data/examples/RedBook/hello.rb +29 -27
  45. data/examples/RedBook/image.rb +57 -55
  46. data/examples/RedBook/jitter.rb +131 -131
  47. data/examples/RedBook/light.rb +2 -1
  48. data/examples/RedBook/lines.rb +70 -68
  49. data/examples/RedBook/list.rb +48 -46
  50. data/examples/RedBook/material.rb +200 -199
  51. data/examples/RedBook/mipmap.rb +84 -82
  52. data/examples/RedBook/model.rb +55 -53
  53. data/examples/RedBook/movelight.rb +52 -50
  54. data/examples/RedBook/pickdepth.rb +103 -101
  55. data/examples/RedBook/planet.rb +46 -44
  56. data/examples/RedBook/quadric.rb +97 -95
  57. data/examples/RedBook/robot.rb +55 -53
  58. data/examples/RedBook/select.rb +118 -116
  59. data/examples/RedBook/smooth.rb +35 -33
  60. data/examples/RedBook/stencil.rb +96 -94
  61. data/examples/RedBook/stroke.rb +75 -73
  62. data/examples/RedBook/surface.rb +93 -91
  63. data/examples/RedBook/teaambient.rb +71 -69
  64. data/examples/RedBook/teapots.rb +105 -103
  65. data/examples/RedBook/tess.rb +96 -94
  66. data/examples/RedBook/texbind.rb +79 -77
  67. data/examples/RedBook/texgen.rb +88 -86
  68. data/examples/RedBook/texturesurf.rb +57 -55
  69. data/examples/RedBook/varray.rb +85 -83
  70. data/examples/RedBook/wrap.rb +76 -74
  71. data/examples/misc/OGLBench.rb +114 -113
  72. data/examples/misc/anisotropic.rb +154 -152
  73. data/examples/misc/fbo_test.rb +37 -36
  74. data/examples/misc/font-glut.rb +47 -46
  75. data/examples/misc/glfwtest.rb +16 -16
  76. data/examples/misc/plane.rb +13 -13
  77. data/examples/misc/readpixel.rb +66 -65
  78. data/examples/misc/sdltest.rb +21 -19
  79. data/examples/misc/trislam.rb +548 -547
  80. data/ext/opengl/common.h +16 -38
  81. data/ext/opengl/conv.h +39 -41
  82. data/ext/opengl/extconf.rb +4 -31
  83. data/ext/opengl/funcdef.h +126 -124
  84. data/ext/opengl/gl-1.0-1.1.c +1917 -1917
  85. data/ext/opengl/gl-1.2.c +4 -667
  86. data/ext/opengl/gl-1.3.c +9 -9
  87. data/ext/opengl/gl-1.4.c +8 -8
  88. data/ext/opengl/gl-1.5.c +1 -1
  89. data/ext/opengl/gl-2.0.c +392 -388
  90. data/ext/opengl/gl-3.0.c +493 -0
  91. data/ext/opengl/gl-enums.c +1523 -5
  92. data/ext/opengl/gl-enums.h +4679 -122
  93. data/ext/opengl/gl-error.c +7 -7
  94. data/ext/opengl/gl-error.h +4 -4
  95. data/ext/opengl/gl-ext-arb.c +468 -464
  96. data/ext/opengl/gl-ext-ext.c +18 -18
  97. data/ext/opengl/gl-ext-nv.c +15 -15
  98. data/ext/opengl/gl.c +2 -0
  99. data/ext/opengl/gl_buffer.c +92 -92
  100. data/ext/opengl/opengl.c +1 -7
  101. data/lib/opengl.rb +23 -59
  102. data/lib/opengl/1.9/opengl.so +0 -0
  103. data/lib/opengl/2.0/opengl.so +0 -0
  104. data/lib/opengl/2.1/opengl.so +0 -0
  105. data/lib/opengl/test_case.rb +1 -2
  106. data/test/dummy.xorg.conf +140 -0
  107. data/test/test_gl.rb +18 -22
  108. data/test/test_gl_10_11.rb +220 -220
  109. data/test/test_gl_12.rb +11 -122
  110. data/test/test_gl_13.rb +202 -210
  111. data/test/test_gl_14.rb +16 -19
  112. data/test/test_gl_15.rb +2 -4
  113. data/test/test_gl_20.rb +45 -58
  114. data/test/test_gl_21.rb +46 -163
  115. data/test/test_gl_ext_arb.rb +54 -72
  116. data/test/test_gl_ext_ati.rb +0 -2
  117. data/test/test_gl_ext_ext.rb +66 -66
  118. data/test/test_gl_ext_gremedy.rb +8 -15
  119. data/test/test_gl_ext_nv.rb +109 -112
  120. data/test/test_opengl_buffer.rb +8 -25
  121. data/utils/README +0 -5
  122. data/utils/enumgen.rb +72 -76
  123. data/utils/extlistgen.rb +55 -55
  124. metadata +90 -67
  125. metadata.gz.sig +0 -0
  126. data/Rakefile.cross +0 -107
  127. data/docs/build_install.txt +0 -119
  128. data/docs/extensions.txt.in +0 -348
  129. data/docs/history.txt +0 -66
  130. data/docs/requirements_and_design.txt +0 -117
  131. data/docs/roadmap.txt +0 -28
  132. data/docs/scientific_use.txt +0 -35
  133. data/docs/supplies/page_template.html +0 -71
  134. data/docs/thanks.txt +0 -29
  135. data/docs/tutorial.txt +0 -469
  136. data/ext/opengl/glu-enums.c +0 -164
  137. data/ext/opengl/glu-enums.h +0 -463
  138. data/ext/opengl/glu.c +0 -1534
  139. data/ext/opengl/glut.c +0 -1145
  140. data/ext/opengl/glut_callbacks.c +0 -845
  141. data/lib/glu.rb +0 -1
  142. data/lib/glut.rb +0 -1
  143. data/lib/opengl/opengl.so +0 -0
  144. data/test/test_glu.rb +0 -309
  145. data/utils/mkdn2html.rb +0 -59
  146. data/utils/post-mkdn2html.rb +0 -91
  147. data/website/images/ogl.jpg +0 -0
  148. data/website/images/tab_bottom.gif +0 -0
  149. data/website/style.css +0 -198
@@ -0,0 +1,493 @@
1
+ /*
2
+ * Copyright (C) 2013 Blaž Hrastnik <speed.the.bboy@gmail.com>
3
+ *
4
+ * This program is distributed under the terms of the MIT license.
5
+ * See the included MIT-LICENSE file for the terms of this license.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
8
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
11
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
12
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
13
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14
+ */
15
+
16
+ #include "common.h"
17
+
18
+ /*
19
+ GL_APPLE_flush_buffer_range -> actually ARB_map_buffer_range
20
+
21
+ GL_EXT_framebuffer_object -> GL_ARB_framebuffer_object
22
+
23
+ GL_NV_half_float
24
+
25
+ GL_EXT_transform_feedback
26
+ GL_APPLE_vertex_array_object --> ARB_vertex_array_object
27
+
28
+ -- New commands in OpenGL 3.0:
29
+
30
+ ClearBufferiv(buffer, drawbuffer, value)
31
+ return void
32
+ param buffer GLenum in value
33
+ param drawbuffer DrawBufferName in value
34
+ param value Int32 in array [COMPSIZE(buffer)]
35
+
36
+ ClearBufferuiv(buffer, drawbuffer, value)
37
+ return void
38
+ param buffer GLenum in value
39
+ param drawbuffer DrawBufferName in value
40
+ param value UInt32 in array [COMPSIZE(buffer)]
41
+
42
+ ClearBufferfv(buffer, drawbuffer, value)
43
+ return void
44
+ param buffer GLenum in value
45
+ param drawbuffer DrawBufferName in value
46
+ param value Float32 in array [COMPSIZE(buffer)]
47
+
48
+ ClearBufferfi(buffer, drawbuffer, depth, stencil)
49
+ return void
50
+ param buffer GLenum in value
51
+ param drawbuffer DrawBufferName in value
52
+ param depth Float32 in value
53
+ param stencil Int32 in value
54
+
55
+ GetStringi(name, index)
56
+ return String
57
+ param name GLenum in value
58
+ param index UInt32 in value
59
+
60
+ */
61
+
62
+ /* GL_NV_conditional_render */
63
+ GL_FUNC_LOAD_2(BeginConditionalRender,GLvoid, GLuint, GLenum, "3.0")
64
+ GL_FUNC_LOAD_0(EndConditionalRender,GLvoid, "3.0")
65
+
66
+ /* #326 - GL_EXT_gpu_shader4 */
67
+ GL_FUNC_LOAD_2(VertexAttribI1i,GLvoid, GLuint,GLint, "3.0")
68
+ GL_FUNC_LOAD_3(VertexAttribI2i,GLvoid, GLuint,GLint,GLint, "3.0")
69
+ GL_FUNC_LOAD_4(VertexAttribI3i,GLvoid, GLuint,GLint,GLint,GLint, "3.0")
70
+ GL_FUNC_LOAD_5(VertexAttribI4i,GLvoid, GLuint,GLint,GLint,GLint,GLint, "3.0")
71
+ GL_FUNC_LOAD_2(VertexAttribI1ui,GLvoid, GLuint,GLuint, "3.0")
72
+ GL_FUNC_LOAD_3(VertexAttribI2ui,GLvoid, GLuint,GLuint,GLuint, "3.0")
73
+ GL_FUNC_LOAD_4(VertexAttribI3ui,GLvoid, GLuint,GLuint,GLuint,GLuint, "3.0")
74
+ GL_FUNC_LOAD_5(VertexAttribI4ui,GLvoid, GLuint,GLuint,GLuint,GLuint,GLuint, "3.0")
75
+
76
+ #define GLVERTEXATTRIB_VFUNC(_name_,_type_,_conv_,_size_) \
77
+ static void (APIENTRY * fptr_gl##_name_)(GLuint,const _type_ *); \
78
+ static VALUE \
79
+ gl_##_name_(obj,arg1,arg2) \
80
+ VALUE obj,arg1,arg2; \
81
+ { \
82
+ _type_ value[_size_]; \
83
+ LOAD_GL_FUNC(gl##_name_, "3.0"); \
84
+ _conv_(arg2,value,_size_); \
85
+ fptr_gl##_name_(NUM2UINT(arg1),value); \
86
+ CHECK_GLERROR_FROM("gl" #_name_); \
87
+ return Qnil; \
88
+ }
89
+
90
+ GLVERTEXATTRIB_VFUNC(VertexAttribI1iv,GLint,ary2cint,1)
91
+ GLVERTEXATTRIB_VFUNC(VertexAttribI2iv,GLint,ary2cint,2)
92
+ GLVERTEXATTRIB_VFUNC(VertexAttribI3iv,GLint,ary2cint,3)
93
+ GLVERTEXATTRIB_VFUNC(VertexAttribI4iv,GLint,ary2cint,4)
94
+ GLVERTEXATTRIB_VFUNC(VertexAttribI1uiv,GLuint,ary2cuint,1)
95
+ GLVERTEXATTRIB_VFUNC(VertexAttribI2uiv,GLuint,ary2cuint,2)
96
+ GLVERTEXATTRIB_VFUNC(VertexAttribI3uiv,GLuint,ary2cuint,3)
97
+ GLVERTEXATTRIB_VFUNC(VertexAttribI4uiv,GLuint,ary2cuint,4)
98
+ GLVERTEXATTRIB_VFUNC(VertexAttribI4bv,GLbyte,ary2cbyte,4)
99
+ GLVERTEXATTRIB_VFUNC(VertexAttribI4sv,GLshort,ary2cshort,4)
100
+ GLVERTEXATTRIB_VFUNC(VertexAttribI4ubv,GLubyte,ary2cubyte,4)
101
+ GLVERTEXATTRIB_VFUNC(VertexAttribI4usv,GLushort,ary2cushort,4)
102
+ #undef GLVERTEXATTRIB_VFUNC
103
+
104
+ #define GETVERTEXATTRIB_FUNC(_name_,_type_,_conv_,_extension_) \
105
+ static void (APIENTRY * fptr_gl##_name_)(GLuint,GLenum,_type_ *); \
106
+ static VALUE \
107
+ gl_##_name_(obj,arg1,arg2) \
108
+ VALUE obj,arg1,arg2; \
109
+ { \
110
+ GLuint index; \
111
+ GLenum pname; \
112
+ _type_ params[4] = {0,0,0,0}; \
113
+ GLint size; \
114
+ LOAD_GL_FUNC(gl##_name_, _extension_); \
115
+ index = (GLuint)NUM2UINT(arg1); \
116
+ pname = (GLenum)NUM2INT(arg2); \
117
+ if (pname==GL_CURRENT_VERTEX_ATTRIB_ARB) \
118
+ size = 4; \
119
+ else \
120
+ size = 1; \
121
+ fptr_gl##_name_(index,pname,params); \
122
+ RET_ARRAY_OR_SINGLE_BOOL("gl" #_name_, size, _conv_, pname, params); \
123
+ }
124
+
125
+ GETVERTEXATTRIB_FUNC(GetVertexAttribIiv,GLint,cond_GLBOOL2RUBY,"3.0")
126
+ GETVERTEXATTRIB_FUNC(GetVertexAttribIuiv,GLuint,cond_GLBOOL2RUBY_U,"3.0")
127
+ #undef GETVERTEXATTRIB_FUNC
128
+
129
+ extern VALUE g_VertexAttrib_ptr[];
130
+
131
+ static void (APIENTRY * fptr_glVertexAttribIPointer)(GLuint,GLint,GLenum,GLsizei,const GLvoid *);
132
+ static VALUE gl_VertexAttribIPointer(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3,VALUE arg4,VALUE arg5)
133
+ {
134
+ GLuint index;
135
+ GLuint size;
136
+ GLenum type;
137
+ GLsizei stride;
138
+
139
+ LOAD_GL_FUNC(glVertexAttribIPointer, "3.0");
140
+
141
+ index = (GLuint)NUM2UINT(arg1);
142
+ size = (GLuint)NUM2UINT(arg2);
143
+ type = (GLenum)NUM2INT(arg3);
144
+ stride = (GLsizei)NUM2UINT(arg4);
145
+ if (index>_MAX_VERTEX_ATTRIBS)
146
+ rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);
147
+
148
+ if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
149
+ g_VertexAttrib_ptr[index] = arg5;
150
+ fptr_glVertexAttribIPointer(index,size,type,stride,(GLvoid *)NUM2SIZET(arg5));
151
+ } else {
152
+ VALUE data;
153
+ data = pack_array_or_pass_string(type,arg5);
154
+ rb_str_freeze(data);
155
+ g_VertexAttrib_ptr[index] = data;
156
+ fptr_glVertexAttribIPointer(index,size,type,stride,(GLvoid *)RSTRING_PTR(data));
157
+ }
158
+
159
+ CHECK_GLERROR_FROM("glVertexAttribIPointer");
160
+ return Qnil;
161
+ }
162
+
163
+ GL_FUNC_LOAD_2(Uniform1ui,GLvoid, GLint,GLuint, "3.0")
164
+ GL_FUNC_LOAD_3(Uniform2ui,GLvoid, GLint,GLuint,GLuint, "3.0")
165
+ GL_FUNC_LOAD_4(Uniform3ui,GLvoid, GLint,GLuint,GLuint,GLuint, "3.0")
166
+ GL_FUNC_LOAD_5(Uniform4ui,GLvoid, GLint,GLuint,GLuint,GLuint,GLuint, "3.0")
167
+
168
+ #define GLUNIFORM_VFUNC(_name_,_type_,_conv_,_size_) \
169
+ static void (APIENTRY * fptr_gl##_name_)(GLint,GLsizei,const _type_ *); \
170
+ static VALUE \
171
+ gl_##_name_(obj,arg1,arg2) \
172
+ VALUE obj,arg1,arg2; \
173
+ { \
174
+ GLint location; \
175
+ GLsizei count; \
176
+ _type_ *value; \
177
+ LOAD_GL_FUNC(gl##_name_, "3.0"); \
178
+ Check_Type(arg2,T_ARRAY); \
179
+ count = (GLsizei)RARRAY_LENINT(arg2); \
180
+ if (count<=0 || (count % _size_) != 0) \
181
+ rb_raise(rb_eArgError, "Parameter array size must be multiplication of %i",_size_); \
182
+ location = (GLint)NUM2INT(arg1); \
183
+ value = ALLOC_N(_type_,count); \
184
+ _conv_(arg2,value,count); \
185
+ fptr_gl##_name_(location,count / _size_,value); \
186
+ xfree(value); \
187
+ CHECK_GLERROR_FROM("gl" #_name_); \
188
+ return Qnil; \
189
+ }
190
+
191
+ GLUNIFORM_VFUNC(Uniform1uiv,GLuint,ary2cuint,1)
192
+ GLUNIFORM_VFUNC(Uniform2uiv,GLuint,ary2cuint,2)
193
+ GLUNIFORM_VFUNC(Uniform3uiv,GLuint,ary2cuint,3)
194
+ GLUNIFORM_VFUNC(Uniform4uiv,GLuint,ary2cuint,4)
195
+ #undef GLUNIFORM_VFUNC
196
+
197
+ static void (APIENTRY * fptr_glGetActiveUniformARB)(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*);
198
+ #define GETUNIFORM_FUNC(_name_,_type_) \
199
+ static void (APIENTRY * fptr_gl##_name_)(GLuint,GLint,_type_ *); \
200
+ static VALUE \
201
+ gl_##_name_(obj,arg1,arg2) \
202
+ VALUE obj,arg1,arg2; \
203
+ { \
204
+ GLuint program; \
205
+ GLint location; \
206
+ _type_ params[16]; \
207
+ GLint unused = 0; \
208
+ GLenum uniform_type = 0; \
209
+ GLint uniform_size = 0; \
210
+ \
211
+ LOAD_GL_FUNC(gl##_name_, "3.0"); \
212
+ LOAD_GL_FUNC(glGetActiveUniformARB, "3.0"); \
213
+ program = (GLuint)NUM2UINT(arg1); \
214
+ location = (GLint)NUM2INT(arg2); \
215
+ \
216
+ fptr_glGetActiveUniformARB(program,location,0,NULL,&unused,&uniform_type,NULL); \
217
+ CHECK_GLERROR_FROM("glGetActiveUniformARB"); \
218
+ if (uniform_type==0) \
219
+ rb_raise(rb_eTypeError, "Can't determine the uniform's type"); \
220
+ \
221
+ uniform_size = get_uniform_size(uniform_type); \
222
+ \
223
+ memset(params,0,16*sizeof(_type_)); \
224
+ fptr_gl##_name_(program,location,params); \
225
+ RET_ARRAY_OR_SINGLE("gl" #_name_, uniform_size, RETCONV_##_type_, params); \
226
+ }
227
+
228
+ GETUNIFORM_FUNC(GetUniformuiv,GLuint)
229
+ #undef GETUNIFORM_FUNC
230
+
231
+ static void (APIENTRY * fptr_glBindFragDataLocation)(GLuint,GLuint,const GLchar *);
232
+ static VALUE gl_BindFragDataLocation(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
233
+ {
234
+ LOAD_GL_FUNC(glBindFragDataLocation, "3.0");
235
+ Check_Type(arg3,T_STRING);
236
+ fptr_glBindFragDataLocation(NUM2UINT(arg1),NUM2UINT(arg2),RSTRING_PTR(arg3));
237
+ CHECK_GLERROR_FROM("glBindFragDataLocation");
238
+ return Qnil;
239
+ }
240
+
241
+ static GLint (APIENTRY * fptr_glGetFragDataLocation)(GLuint,const GLchar *);
242
+ static VALUE gl_GetFragDataLocation(VALUE obj,VALUE arg1,VALUE arg2)
243
+ {
244
+ GLint ret;
245
+ LOAD_GL_FUNC(glGetFragDataLocation, "3.0");
246
+ Check_Type(arg2,T_STRING);
247
+ ret = fptr_glGetFragDataLocation(NUM2UINT(arg1),RSTRING_PTR(arg2));
248
+ CHECK_GLERROR_FROM("glGetFragDataLocation");
249
+ return INT2NUM(ret);
250
+ }
251
+
252
+ /* ARB_map_buffer_range */
253
+
254
+ /* #39 GL_ARB_color_buffer_float */
255
+
256
+ GL_FUNC_LOAD_2(ClampColor,GLvoid, GLenum,GLenum, "3.0")
257
+
258
+ /* #334 GL_NV_depth_buffer_float */
259
+
260
+ GL_FUNC_LOAD_2(DepthRanged,GLvoid, GLdouble,GLdouble, "3.0")
261
+ GL_FUNC_LOAD_1(ClearDepthd,GLvoid, GLdouble, "3.0")
262
+ GL_FUNC_LOAD_2(DepthBoundsd,GLvoid, GLdouble,GLdouble, "3.0")
263
+
264
+ /* GL_ARB_framebuffer_object */
265
+ GL_FUNC_LOAD_1(IsRenderbuffer,GLboolean, GLuint, "3.0")
266
+ GL_FUNC_LOAD_2(BindRenderbuffer,GLvoid, GLenum,GLuint, "3.0")
267
+ GL_FUNC_LOAD_4(RenderbufferStorage,GLvoid, GLenum,GLenum,GLsizei,GLsizei, "3.0")
268
+ GL_FUNC_GENOBJECTS_LOAD(GenRenderbuffers,"3.0")
269
+ GL_FUNC_DELETEOBJECTS_LOAD(DeleteRenderbuffers,"3.0")
270
+
271
+ static void (APIENTRY * fptr_glGetRenderbufferParameteriv)(GLenum,GLenum,GLint *);
272
+ static VALUE gl_GetRenderbufferParameteriv(VALUE obj,VALUE arg1,VALUE arg2)
273
+ {
274
+ GLint param = 0;
275
+ LOAD_GL_FUNC(glGetRenderbufferParameteriv, "3.0");
276
+ fptr_glGetRenderbufferParameteriv(NUM2UINT(arg1),NUM2UINT(arg2),&param);
277
+ CHECK_GLERROR_FROM("glGetRenderbufferParameteriv");
278
+ return INT2NUM(param);
279
+ }
280
+
281
+ GL_FUNC_GENOBJECTS_LOAD(GenFramebuffers,"3.0")
282
+ GL_FUNC_DELETEOBJECTS_LOAD(DeleteFramebuffers,"3.0")
283
+ GL_FUNC_LOAD_1(IsFramebuffer,GLboolean, GLuint, "3.0")
284
+ GL_FUNC_LOAD_2(BindFramebuffer,GLvoid, GLenum,GLuint, "3.0")
285
+ GL_FUNC_LOAD_1(CheckFramebufferStatus,GLenum, GLenum, "3.0")
286
+ GL_FUNC_LOAD_5(FramebufferTexture1D,GLvoid, GLenum,GLenum,GLenum,GLuint,GLint, "3.0")
287
+ GL_FUNC_LOAD_5(FramebufferTexture2D,GLvoid, GLenum,GLenum,GLenum,GLuint,GLint, "3.0")
288
+ GL_FUNC_LOAD_6(FramebufferTexture3D,GLvoid, GLenum,GLenum,GLenum,GLuint,GLint,GLint, "3.0")
289
+ GL_FUNC_LOAD_5(FramebufferTextureLayer,GLvoid, GLenum,GLenum,GLuint,GLint,GLint, "3.0")
290
+ GL_FUNC_LOAD_4(FramebufferRenderbuffer,GLvoid, GLuint,GLuint,GLuint,GLuint, "3.0")
291
+
292
+ static void (APIENTRY * fptr_glGetFramebufferAttachmentParameteriv)(GLenum,GLenum,GLenum,GLint *);
293
+ static VALUE gl_GetFramebufferAttachmentParameteriv(VALUE obj,VALUE arg1, VALUE arg2, VALUE arg3)
294
+ {
295
+ GLint ret = 0;
296
+ LOAD_GL_FUNC(glGetFramebufferAttachmentParameteriv, "3.0");
297
+ fptr_glGetFramebufferAttachmentParameteriv(NUM2UINT(arg1),NUM2UINT(arg2),NUM2UINT(arg3),&ret);
298
+ CHECK_GLERROR_FROM("glGetFramebufferAttachmentParameteriv");
299
+ return cond_GLBOOL2RUBY(NUM2UINT(arg3),ret);
300
+ }
301
+
302
+ GL_FUNC_LOAD_1(GenerateMipmap,GLvoid, GLenum, "3.0")
303
+
304
+ /* GL_NV_half_float */
305
+
306
+ /* #317 - GL_EXT_framebuffer_multisample */
307
+ GL_FUNC_LOAD_5(RenderbufferStorageMultisample,GLvoid, GLenum,GLsizei,GLenum,GLsizei,GLsizei, "3.0")
308
+
309
+ /* #316 - GL_EXT_framebuffer_blit */
310
+ GL_FUNC_LOAD_10(BlitFramebuffer,GLvoid, GLint,GLint,GLint,GLint,GLint,GLint,GLint,GLint,GLbitfield,GLenum, "3.0")
311
+
312
+ /* #343 - GL_EXT_texture_integer */
313
+ GL_FUNC_LOAD_4(ClearColorIi,GLvoid, GLint,GLint,GLint,GLint, "3.0")
314
+ GL_FUNC_LOAD_4(ClearColorIui,GLvoid, GLuint,GLuint,GLuint,GLuint, "3.0")
315
+
316
+ #define TEXPARAMETER_VFUNC(_name_,_type_,_conv_) \
317
+ static void (APIENTRY * fptr_gl##_name_)(GLenum,GLenum,_type_ *); \
318
+ static VALUE \
319
+ gl_##_name_(obj,arg1,arg2,arg3) \
320
+ VALUE obj,arg1,arg2,arg3; \
321
+ { \
322
+ GLenum target; \
323
+ GLenum pname; \
324
+ _type_ params[4] = {0,0,0,0}; \
325
+ LOAD_GL_FUNC(gl##_name_, "3.0"); \
326
+ target = (GLenum)NUM2UINT(arg1); \
327
+ pname = (GLenum)NUM2UINT(arg2); \
328
+ Check_Type(arg3,T_ARRAY); \
329
+ _conv_(arg3,params,4); \
330
+ fptr_gl##_name_(target,pname,params); \
331
+ CHECK_GLERROR_FROM("gl" #_name_); \
332
+ return Qnil; \
333
+ }
334
+
335
+ TEXPARAMETER_VFUNC(TexParameterIiv,GLint,ary2cint)
336
+ TEXPARAMETER_VFUNC(TexParameterIuiv,GLuint,ary2cuint)
337
+ #undef TEXPARAMETER_VFUNC
338
+
339
+ #define GETTEXPARAMETER_VFUNC(_name_,_type_,_conv_) \
340
+ static void (APIENTRY * fptr_gl##_name_)(GLenum,GLenum,_type_ *); \
341
+ static VALUE \
342
+ gl_##_name_(obj,arg1,arg2) \
343
+ VALUE obj,arg1,arg2; \
344
+ { \
345
+ GLenum target; \
346
+ GLenum pname; \
347
+ _type_ params[4] = {0,0,0,0}; \
348
+ int size; \
349
+ LOAD_GL_FUNC(gl##_name_, "3.0"); \
350
+ target = (GLenum)NUM2INT(arg1); \
351
+ pname = (GLenum)NUM2INT(arg2); \
352
+ switch(pname) { \
353
+ case GL_TEXTURE_BORDER_COLOR: \
354
+ case GL_TEXTURE_BORDER_VALUES_NV: \
355
+ case GL_POST_TEXTURE_FILTER_BIAS_SGIX: \
356
+ case GL_POST_TEXTURE_FILTER_SCALE_SGIX: \
357
+ size = 4; \
358
+ break; \
359
+ default: \
360
+ size = 1; \
361
+ break; \
362
+ } \
363
+ fptr_gl##_name_(target,pname,params); \
364
+ RET_ARRAY_OR_SINGLE_BOOL("gl" #_name_, size, _conv_, pname, params); \
365
+ }
366
+
367
+ GETTEXPARAMETER_VFUNC(GetTexParameterIiv,GLint,cond_GLBOOL2RUBY)
368
+ GETTEXPARAMETER_VFUNC(GetTexParameterIuiv,GLuint,cond_GLBOOL2RUBY_U)
369
+ #undef GETTEXPARAMETER_VFUNC
370
+
371
+ /* #340 - GL_EXT_draw_buffers2 */
372
+ GL_FUNC_LOAD_5(ColorMaski,GLvoid, GLuint,GLboolean,GLboolean,GLboolean,GLboolean, "3.0")
373
+
374
+ #define GETINDEXED_FUNC(_name_,_type_,_conv_,_extension_) \
375
+ static void (APIENTRY * fptr_gl##_name_)(GLenum,GLenum,_type_ *); \
376
+ static VALUE \
377
+ gl_##_name_(obj,arg1,arg2) \
378
+ VALUE obj,arg1,arg2; \
379
+ { \
380
+ GLenum target; \
381
+ GLenum pname; \
382
+ _type_ result; \
383
+ LOAD_GL_FUNC(gl##_name_, _extension_); \
384
+ target = (GLenum)NUM2INT(arg1); \
385
+ pname = (GLuint)NUM2INT(arg2); \
386
+ fptr_gl##_name_(target,pname,&result); \
387
+ return _conv_(result); \
388
+ }
389
+
390
+ GETINDEXED_FUNC(GetBooleani_v, GLboolean, GLBOOL2RUBY, "3.0")
391
+ GETINDEXED_FUNC(GetIntegeri_v, GLint, INT2NUM, "3.0")
392
+ #undef GETINDEXED_FUNC
393
+
394
+ GL_FUNC_LOAD_2(Enablei,GLvoid, GLenum,GLuint, "3.0")
395
+ GL_FUNC_LOAD_2(Disablei,GLvoid, GLenum,GLuint, "3.0")
396
+ GL_FUNC_LOAD_2(IsEnabledi,GLvoid, GLenum,GLuint, "3.0")
397
+
398
+ void gl_init_functions_3_0(VALUE module)
399
+ {
400
+ /* GL_NV_conditional_render */
401
+ rb_define_module_function(module, "glBeginConditionalRender", gl_BeginConditionalRender, 2);
402
+ rb_define_module_function(module, "glEndConditionalRender", gl_EndConditionalRender, 0);
403
+
404
+ /* #326 - GL_EXT_gpu_shader4 */
405
+ rb_define_module_function(module, "glVertexAttribI1i", gl_VertexAttribI1i, 2);
406
+ rb_define_module_function(module, "glVertexAttribI2i", gl_VertexAttribI2i, 3);
407
+ rb_define_module_function(module, "glVertexAttribI3i", gl_VertexAttribI3i, 4);
408
+ rb_define_module_function(module, "glVertexAttribI4i", gl_VertexAttribI4i, 5);
409
+ rb_define_module_function(module, "glVertexAttribI1ui", gl_VertexAttribI1ui, 2);
410
+ rb_define_module_function(module, "glVertexAttribI2ui", gl_VertexAttribI2ui, 3);
411
+ rb_define_module_function(module, "glVertexAttribI3ui", gl_VertexAttribI3ui, 4);
412
+ rb_define_module_function(module, "glVertexAttribI4ui", gl_VertexAttribI4ui, 5);
413
+ rb_define_module_function(module, "glVertexAttribI1iv", gl_VertexAttribI1iv, 2);
414
+ rb_define_module_function(module, "glVertexAttribI2iv", gl_VertexAttribI2iv, 2);
415
+ rb_define_module_function(module, "glVertexAttribI3iv", gl_VertexAttribI3iv, 2);
416
+ rb_define_module_function(module, "glVertexAttribI4iv", gl_VertexAttribI4iv, 2);
417
+ rb_define_module_function(module, "glVertexAttribI1uiv", gl_VertexAttribI1uiv, 2);
418
+ rb_define_module_function(module, "glVertexAttribI2uiv", gl_VertexAttribI2uiv, 2);
419
+ rb_define_module_function(module, "glVertexAttribI3uiv", gl_VertexAttribI3uiv, 2);
420
+ rb_define_module_function(module, "glVertexAttribI4uiv", gl_VertexAttribI4uiv, 2);
421
+ rb_define_module_function(module, "glVertexAttribI4bv", gl_VertexAttribI4bv, 2);
422
+ rb_define_module_function(module, "glVertexAttribI4sv", gl_VertexAttribI4sv, 2);
423
+ rb_define_module_function(module, "glVertexAttribI4ubv", gl_VertexAttribI4ubv, 2);
424
+ rb_define_module_function(module, "glVertexAttribI4usv", gl_VertexAttribI4usv, 2);
425
+ rb_define_module_function(module, "glVertexAttribIPointer", gl_VertexAttribIPointer, 5);
426
+ rb_define_module_function(module, "glGetVertexAttribIiv", gl_GetVertexAttribIiv, 2);
427
+ rb_define_module_function(module, "glGetVertexAttribIuiv", gl_GetVertexAttribIuiv, 2);
428
+ rb_define_module_function(module, "glUniform1ui", gl_Uniform1ui, 2);
429
+ rb_define_module_function(module, "glUniform2ui", gl_Uniform2ui, 3);
430
+ rb_define_module_function(module, "glUniform3ui", gl_Uniform3ui, 4);
431
+ rb_define_module_function(module, "glUniform4ui", gl_Uniform4ui, 5);
432
+ rb_define_module_function(module, "glUniform1uiv", gl_Uniform1uiv, 2);
433
+ rb_define_module_function(module, "glUniform2uiv", gl_Uniform2uiv, 2);
434
+ rb_define_module_function(module, "glUniform3uiv", gl_Uniform3uiv, 2);
435
+ rb_define_module_function(module, "glUniform4uiv", gl_Uniform4uiv, 2);
436
+ rb_define_module_function(module, "glGetUniformuiv", gl_GetUniformuiv, 2);
437
+ rb_define_module_function(module, "glBindFragDataLocation", gl_BindFragDataLocation, 3);
438
+ rb_define_module_function(module, "glGetFragDataLocation", gl_GetFragDataLocation, 2);
439
+
440
+ /* GL_NV_conditional_render */
441
+
442
+ /* GL_APPLE_flush_buffer_range */
443
+
444
+ /* #39 GL_ARB_color_buffer_float */
445
+ rb_define_module_function(module, "glClampColor", gl_ClampColor, 2);
446
+
447
+ /* #334 GL_NV_depth_buffer_float */
448
+ rb_define_module_function(module, "glDepthRanged", gl_DepthRanged, 2);
449
+ rb_define_module_function(module, "glClearDepthd", gl_ClearDepthd, 1);
450
+ rb_define_module_function(module, "glDepthBoundsd", gl_DepthBoundsd, 2);
451
+
452
+ /* #310 - GL_EXT_framebuffer_object */
453
+ rb_define_module_function(module, "glIsRenderbuffer", gl_IsRenderbuffer, 1);
454
+ rb_define_module_function(module, "glBindRenderbuffer", gl_BindRenderbuffer, 2);
455
+ rb_define_module_function(module, "glDeleteRenderbuffers", gl_DeleteRenderbuffers, 1);
456
+ rb_define_module_function(module, "glGenRenderbuffers", gl_GenRenderbuffers, 1);
457
+ rb_define_module_function(module, "glRenderbufferStorage", gl_RenderbufferStorage, 4);
458
+ rb_define_module_function(module, "glGetRenderbufferParameteriv", gl_GetRenderbufferParameteriv, 2);
459
+ rb_define_module_function(module, "glIsFramebuffer", gl_IsFramebuffer, 1);
460
+ rb_define_module_function(module, "glBindFramebuffer", gl_BindFramebuffer, 2);
461
+ rb_define_module_function(module, "glDeleteFramebuffers", gl_DeleteFramebuffers, 1);
462
+ rb_define_module_function(module, "glGenFramebuffers", gl_GenFramebuffers, 1);
463
+ rb_define_module_function(module, "glCheckFramebufferStatus", gl_CheckFramebufferStatus, 1);
464
+ rb_define_module_function(module, "glFramebufferTexture1D", gl_FramebufferTexture1D, 5);
465
+ rb_define_module_function(module, "glFramebufferTexture2D", gl_FramebufferTexture2D, 5);
466
+ rb_define_module_function(module, "glFramebufferTexture3D", gl_FramebufferTexture3D, 6);
467
+ rb_define_module_function(module, "glFramebufferRenderbuffer", gl_FramebufferRenderbuffer, 4);
468
+ rb_define_module_function(module, "glFramebufferTextureLayer", gl_FramebufferTextureLayer, 5);
469
+ rb_define_module_function(module, "glGetFramebufferAttachmentParameteriv", gl_GetFramebufferAttachmentParameteriv, 3);
470
+ rb_define_module_function(module, "glGenerateMipmap", gl_GenerateMipmap, 1);
471
+
472
+ /* #317 - GL_EXT_framebuffer_multisample */
473
+ rb_define_module_function(module, "glRenderbufferStorageMultisample", gl_RenderbufferStorageMultisample, 5);
474
+
475
+ /* #316 - GL_EXT_framebuffer_blit */
476
+ rb_define_module_function(module, "glBlitFramebuffer", gl_BlitFramebuffer, 10);
477
+
478
+ /* #343 - GL_EXT_texture_integer */
479
+ rb_define_module_function(module, "glClearColorIi", gl_ClearColorIi, 4);
480
+ rb_define_module_function(module, "glClearColorIui", gl_ClearColorIui, 4);
481
+ rb_define_module_function(module, "glTexParameterIiv", gl_TexParameterIiv, 3);
482
+ rb_define_module_function(module, "glTexParameterIuiv", gl_TexParameterIuiv, 3);
483
+ rb_define_module_function(module, "glGetTexParameterIiv", gl_GetTexParameterIiv, 2);
484
+ rb_define_module_function(module, "glGetTexParameterIuiv", gl_GetTexParameterIuiv, 2);
485
+
486
+ /* #340 - GL_EXT_draw_buffers2 */
487
+ rb_define_module_function(module, "glColorMaski", gl_ColorMaski, 5);
488
+ rb_define_module_function(module, "glGetBooleani_v", gl_GetBooleani_v, 2);
489
+ rb_define_module_function(module, "glGetIntegeri_v", gl_GetIntegeri_v, 2);
490
+ rb_define_module_function(module, "glEnablei", gl_Enablei, 2);
491
+ rb_define_module_function(module, "glDisablei", gl_Disablei, 2);
492
+ rb_define_module_function(module, "glIsEnabledi", gl_IsEnabledi, 2);
493
+ }