opengl 0.7.0.pre1 → 0.7.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +29 -0
- data/.gitignore +5 -8
- data/History.rdoc +33 -0
- data/Manifest.txt +72 -57
- data/README.rdoc +72 -25
- data/Rakefile +60 -72
- data/Rakefile.cross +5 -2
- data/{doc → docs}/build_install.txt +0 -0
- data/{doc → docs}/extensions.txt.in +0 -0
- data/{doc → docs}/history.txt +0 -0
- data/{doc → docs}/requirements_and_design.txt +0 -0
- data/{doc → docs}/roadmap.txt +0 -0
- data/{doc → docs}/scientific_use.txt +0 -0
- data/{doc → docs}/supplies/page_template.html +0 -0
- data/{doc → docs}/thanks.txt +0 -0
- data/{doc → docs}/tutorial.txt +0 -0
- data/examples/NeHe/NeHe.png +0 -0
- data/examples/NeHe/crate.png +0 -0
- data/examples/NeHe/glass.png +0 -0
- data/examples/NeHe/nehe_lesson02.rb +82 -83
- data/examples/NeHe/nehe_lesson03.rb +88 -88
- data/examples/NeHe/nehe_lesson04.rb +93 -96
- data/examples/NeHe/nehe_lesson05.rb +137 -144
- data/examples/NeHe/nehe_lesson06.rb +183 -0
- data/examples/NeHe/nehe_lesson07.rb +237 -0
- data/examples/NeHe/nehe_lesson08.rb +252 -0
- data/examples/NeHe/nehe_lesson09.rb +199 -0
- data/examples/NeHe/nehe_lesson11.rb +173 -0
- data/examples/NeHe/nehe_lesson12.rb +200 -0
- data/examples/NeHe/nehe_lesson16.rb +208 -0
- data/examples/NeHe/nehe_lesson19.rb +206 -0
- data/examples/NeHe/particle.png +0 -0
- data/examples/NeHe/star.png +0 -0
- data/examples/NeHe/tim.png +0 -0
- data/examples/RedBook/light.rb +154 -0
- data/examples/misc/OGLBench.rb +2 -2
- data/examples/misc/trislam.rb +2 -2
- data/ext/{common → opengl}/common.h +2 -11
- data/ext/{common → opengl}/conv.h +43 -31
- data/ext/{glut → opengl}/extconf.rb +14 -7
- data/ext/{common → opengl}/funcdef.h +155 -125
- data/ext/{gl → opengl}/gl-1.0-1.1.c +426 -162
- data/ext/{gl → opengl}/gl-1.2.c +70 -66
- data/ext/{gl → opengl}/gl-1.3.c +19 -19
- data/ext/{gl → opengl}/gl-1.4.c +23 -23
- data/ext/{gl → opengl}/gl-1.5.c +46 -47
- data/ext/{gl → opengl}/gl-2.0.c +66 -60
- data/ext/{gl → opengl}/gl-2.1.c +4 -4
- data/ext/{gl → opengl}/gl-enums.c +2 -1
- data/ext/{common → opengl}/gl-enums.h +0 -0
- data/ext/{gl → opengl}/gl-error.c +12 -4
- data/ext/{common → opengl}/gl-error.h +7 -2
- data/ext/{gl → opengl}/gl-ext-3dfx.c +1 -1
- data/ext/{gl → opengl}/gl-ext-arb.c +75 -70
- data/ext/{gl → opengl}/gl-ext-ati.c +3 -3
- data/ext/{gl → opengl}/gl-ext-ext.c +54 -54
- data/ext/{gl → opengl}/gl-ext-gremedy.c +3 -3
- data/ext/{gl → opengl}/gl-ext-nv.c +49 -48
- data/ext/{common → opengl}/gl-types.h +0 -0
- data/ext/{gl → opengl}/gl.c +8 -10
- data/ext/{glu → opengl}/glu-enums.c +1 -1
- data/ext/{common → opengl}/glu-enums.h +0 -0
- data/ext/{glu → opengl}/glu.c +7 -3
- data/ext/{glut → opengl}/glut.c +98 -48
- data/ext/opengl/opengl.c +11 -0
- data/lib/gl.rb +1 -0
- data/lib/glu.rb +1 -0
- data/lib/glut.rb +1 -0
- data/lib/opengl.rb +13 -14
- data/lib/opengl/test_case.rb +87 -0
- data/test/{tc_misc.rb → test_gl.rb} +2 -14
- data/test/test_gl_10_11.rb +1363 -0
- data/test/test_gl_12.rb +182 -0
- data/test/{tc_func_13.rb → test_gl_13.rb} +14 -14
- data/test/test_gl_14.rb +221 -0
- data/test/test_gl_15.rb +260 -0
- data/test/test_gl_20.rb +430 -0
- data/test/test_gl_21.rb +553 -0
- data/test/test_gl_ext_arb.rb +526 -0
- data/test/{tc_ext_ati.rb → test_gl_ext_ati.rb} +11 -14
- data/test/test_gl_ext_ext.rb +608 -0
- data/test/{tc_ext_gremedy.rb → test_gl_ext_gremedy.rb} +6 -6
- data/test/test_gl_ext_nv.rb +352 -0
- data/test/test_glu.rb +309 -0
- metadata +159 -99
- data/History.txt +0 -36
- data/ext/gl/extconf.rb +0 -43
- data/ext/glu/extconf.rb +0 -51
- data/test/README +0 -10
- data/test/tc_common.rb +0 -98
- data/test/tc_ext_arb.rb +0 -467
- data/test/tc_ext_ext.rb +0 -551
- data/test/tc_ext_nv.rb +0 -357
- data/test/tc_func_10_11.rb +0 -1281
- data/test/tc_func_12.rb +0 -186
- data/test/tc_func_14.rb +0 -197
- data/test/tc_func_15.rb +0 -270
- data/test/tc_func_20.rb +0 -346
- data/test/tc_func_21.rb +0 -541
- data/test/tc_glu.rb +0 -310
- data/test/tc_include_gl.rb +0 -35
- data/test/tc_require_gl.rb +0 -34
data/ext/{gl → opengl}/gl-2.0.c
RENAMED
@@ -13,7 +13,7 @@
|
|
13
13
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
14
14
|
*/
|
15
15
|
|
16
|
-
#include "
|
16
|
+
#include "common.h"
|
17
17
|
|
18
18
|
GL_FUNC_LOAD_2(BlendEquationSeparate,GLvoid, GLenum,GLenum, "2.0")
|
19
19
|
GL_FUNC_LOAD_4(StencilOpSeparate,GLvoid, GLenum,GLenum,GLenum,GLenum, "2.0")
|
@@ -62,14 +62,14 @@ VALUE obj,arg1;
|
|
62
62
|
{
|
63
63
|
GLsizei size;
|
64
64
|
GLenum *buffers;
|
65
|
-
LOAD_GL_FUNC(glDrawBuffers,"2.0")
|
65
|
+
LOAD_GL_FUNC(glDrawBuffers, "2.0");
|
66
66
|
Check_Type(arg1,T_ARRAY);
|
67
67
|
size = (GLsizei)RARRAY_LENINT(arg1);
|
68
68
|
buffers = ALLOC_N(GLenum,size);
|
69
69
|
ary2cuint(arg1,buffers,size);
|
70
70
|
fptr_glDrawBuffers(size,buffers);
|
71
71
|
xfree(buffers);
|
72
|
-
|
72
|
+
CHECK_GLERROR_FROM("glDrawBuffers");
|
73
73
|
return Qnil;
|
74
74
|
}
|
75
75
|
|
@@ -80,12 +80,12 @@ VALUE obj,arg1,arg2,arg3;
|
|
80
80
|
{
|
81
81
|
GLuint program;
|
82
82
|
GLuint index;
|
83
|
-
LOAD_GL_FUNC(glBindAttribLocation,"2.0")
|
83
|
+
LOAD_GL_FUNC(glBindAttribLocation, "2.0");
|
84
84
|
program = (GLuint)NUM2UINT(arg1);
|
85
85
|
index = (GLuint)NUM2UINT(arg2);
|
86
86
|
Check_Type(arg3, T_STRING);
|
87
87
|
fptr_glBindAttribLocation(program,index,RSTRING_PTR(arg3));
|
88
|
-
|
88
|
+
CHECK_GLERROR_FROM("glBindAttribLocation");
|
89
89
|
return Qnil;
|
90
90
|
}
|
91
91
|
|
@@ -97,11 +97,11 @@ VALUE obj,arg1,arg2;
|
|
97
97
|
GLuint program;
|
98
98
|
GLenum pname;
|
99
99
|
GLint params = 0;
|
100
|
-
LOAD_GL_FUNC(glGetProgramiv,"2.0")
|
100
|
+
LOAD_GL_FUNC(glGetProgramiv, "2.0");
|
101
101
|
program = (GLuint)NUM2UINT(arg1);
|
102
102
|
pname = (GLenum)NUM2INT(arg2);
|
103
103
|
fptr_glGetProgramiv(program,pname,¶ms);
|
104
|
-
|
104
|
+
CHECK_GLERROR_FROM("glGetProgramiv");
|
105
105
|
return cond_GLBOOL2RUBY(pname,params);
|
106
106
|
}
|
107
107
|
|
@@ -118,12 +118,12 @@ VALUE obj,arg1,arg2;
|
|
118
118
|
GLenum attrib_type = 0;
|
119
119
|
VALUE buffer;
|
120
120
|
VALUE retary;
|
121
|
-
LOAD_GL_FUNC(glGetActiveAttrib,"2.0")
|
122
|
-
LOAD_GL_FUNC(glGetProgramiv,"2.0")
|
121
|
+
LOAD_GL_FUNC(glGetActiveAttrib, "2.0");
|
122
|
+
LOAD_GL_FUNC(glGetProgramiv, "2.0");
|
123
123
|
program = (GLuint)NUM2UINT(arg1);
|
124
124
|
index = (GLuint)NUM2UINT(arg2);
|
125
125
|
fptr_glGetProgramiv(program,GL_ACTIVE_ATTRIBUTE_MAX_LENGTH,&max_size);
|
126
|
-
|
126
|
+
CHECK_GLERROR_FROM("glGetProgramiv");
|
127
127
|
if (max_size==0)
|
128
128
|
rb_raise(rb_eTypeError, "Can't determine maximum attribute name length");
|
129
129
|
buffer = allocate_buffer_with_string(max_size-1);
|
@@ -132,7 +132,7 @@ VALUE obj,arg1,arg2;
|
|
132
132
|
rb_ary_push(retary, INT2NUM(attrib_size));
|
133
133
|
rb_ary_push(retary, INT2NUM(attrib_type));
|
134
134
|
rb_ary_push(retary, buffer);
|
135
|
-
|
135
|
+
CHECK_GLERROR_FROM("glGetActiveAttrib");
|
136
136
|
return retary;
|
137
137
|
}
|
138
138
|
|
@@ -149,21 +149,24 @@ VALUE obj,arg1,arg2;
|
|
149
149
|
GLenum uniform_type = 0;
|
150
150
|
VALUE buffer;
|
151
151
|
VALUE retary;
|
152
|
-
LOAD_GL_FUNC(glGetActiveUniform,"2.0")
|
153
|
-
LOAD_GL_FUNC(glGetProgramiv,"2.0")
|
152
|
+
LOAD_GL_FUNC(glGetActiveUniform, "2.0");
|
153
|
+
LOAD_GL_FUNC(glGetProgramiv, "2.0");
|
154
154
|
program = (GLuint)NUM2UINT(arg1);
|
155
155
|
index = (GLuint)NUM2UINT(arg2);
|
156
156
|
fptr_glGetProgramiv(program,GL_ACTIVE_UNIFORM_MAX_LENGTH,&max_size);
|
157
|
-
|
157
|
+
CHECK_GLERROR_FROM("glGetProgramiv");
|
158
158
|
if (max_size==0)
|
159
159
|
rb_raise(rb_eTypeError, "Can't determine maximum uniform name length");
|
160
160
|
buffer = allocate_buffer_with_string(max_size-1);
|
161
|
+
|
161
162
|
fptr_glGetActiveUniform(program,index,max_size,&written,&uniform_size,&uniform_type,RSTRING_PTR(buffer));
|
163
|
+
|
164
|
+
rb_str_set_len(buffer, strnlen(RSTRING_PTR(buffer), max_size));
|
162
165
|
retary = rb_ary_new2(3);
|
163
166
|
rb_ary_push(retary, INT2NUM(uniform_size));
|
164
167
|
rb_ary_push(retary, INT2NUM(uniform_type));
|
165
168
|
rb_ary_push(retary, buffer);
|
166
|
-
|
169
|
+
CHECK_GLERROR_FROM("glGetActiveUniform");
|
167
170
|
return retary;
|
168
171
|
}
|
169
172
|
|
@@ -176,16 +179,17 @@ VALUE obj,arg1;
|
|
176
179
|
GLint shaders_num = 0;
|
177
180
|
GLuint *shaders;
|
178
181
|
GLsizei count = 0;
|
179
|
-
LOAD_GL_FUNC(glGetAttachedShaders,"2.0")
|
180
|
-
LOAD_GL_FUNC(glGetProgramiv,"2.0")
|
182
|
+
LOAD_GL_FUNC(glGetAttachedShaders, "2.0");
|
183
|
+
LOAD_GL_FUNC(glGetProgramiv, "2.0");
|
181
184
|
program = (GLuint)NUM2UINT(arg1);
|
182
185
|
fptr_glGetProgramiv(program,GL_ATTACHED_SHADERS,&shaders_num);
|
183
|
-
|
186
|
+
CHECK_GLERROR_FROM("glGetProgramiv");
|
184
187
|
if (shaders_num<=0)
|
185
188
|
return Qnil;
|
186
189
|
shaders = ALLOC_N(GLuint,shaders_num);
|
187
190
|
fptr_glGetAttachedShaders(program,shaders_num,&count,shaders);
|
188
|
-
|
191
|
+
RET_ARRAY_OR_SINGLE_FREE("glGetAttachedShaders", count, RETCONV_GLuint,
|
192
|
+
shaders);
|
189
193
|
}
|
190
194
|
|
191
195
|
static GLint (APIENTRY * fptr_glGetAttribLocation)(GLuint, GLchar *);
|
@@ -195,11 +199,11 @@ VALUE obj,arg1,arg2;
|
|
195
199
|
{
|
196
200
|
GLuint program;
|
197
201
|
GLint ret;
|
198
|
-
LOAD_GL_FUNC(glGetAttribLocation,"2.0")
|
202
|
+
LOAD_GL_FUNC(glGetAttribLocation, "2.0");
|
199
203
|
program=(GLuint)NUM2UINT(arg1);
|
200
204
|
Check_Type(arg2,T_STRING);
|
201
205
|
ret = fptr_glGetAttribLocation(program,RSTRING_PTR(arg2));
|
202
|
-
|
206
|
+
CHECK_GLERROR_FROM("glGetAttribLocation");
|
203
207
|
return INT2NUM(ret);
|
204
208
|
}
|
205
209
|
|
@@ -212,16 +216,16 @@ VALUE obj,arg1;
|
|
212
216
|
GLint max_size = 0;
|
213
217
|
GLsizei ret_length = 0;
|
214
218
|
VALUE buffer;
|
215
|
-
LOAD_GL_FUNC(glGetProgramInfoLog,"2.0")
|
216
|
-
LOAD_GL_FUNC(glGetProgramiv,"2.0")
|
219
|
+
LOAD_GL_FUNC(glGetProgramInfoLog, "2.0");
|
220
|
+
LOAD_GL_FUNC(glGetProgramiv, "2.0");
|
217
221
|
program = (GLuint)NUM2UINT(arg1);
|
218
222
|
fptr_glGetProgramiv(program,GL_INFO_LOG_LENGTH,&max_size);
|
219
|
-
|
223
|
+
CHECK_GLERROR_FROM("glGetProgramiv");
|
220
224
|
if (max_size<=0)
|
221
225
|
return rb_str_new2("");
|
222
226
|
buffer = allocate_buffer_with_string(max_size);
|
223
227
|
fptr_glGetProgramInfoLog(program,max_size,&ret_length,RSTRING_PTR(buffer));
|
224
|
-
|
228
|
+
CHECK_GLERROR_FROM("glGetProgramInfoLog");
|
225
229
|
return buffer;
|
226
230
|
}
|
227
231
|
|
@@ -233,11 +237,11 @@ VALUE obj,arg1,arg2;
|
|
233
237
|
GLuint program;
|
234
238
|
GLenum pname;
|
235
239
|
GLint params = 0;
|
236
|
-
LOAD_GL_FUNC(glGetShaderiv,"2.0")
|
240
|
+
LOAD_GL_FUNC(glGetShaderiv, "2.0");
|
237
241
|
program = (GLuint)NUM2UINT(arg1);
|
238
242
|
pname = (GLenum)NUM2INT(arg2);
|
239
243
|
fptr_glGetShaderiv(program,pname,¶ms);
|
240
|
-
|
244
|
+
CHECK_GLERROR_FROM("glGetShaderiv");
|
241
245
|
return cond_GLBOOL2RUBY(pname,params);
|
242
246
|
}
|
243
247
|
|
@@ -251,11 +255,11 @@ VALUE obj,arg1;
|
|
251
255
|
GLsizei ret_length = 0;
|
252
256
|
VALUE ret_buffer;
|
253
257
|
GLchar *buffer;
|
254
|
-
LOAD_GL_FUNC(glGetShaderInfoLog,"2.0")
|
255
|
-
LOAD_GL_FUNC(glGetShaderiv,"2.0")
|
258
|
+
LOAD_GL_FUNC(glGetShaderInfoLog, "2.0");
|
259
|
+
LOAD_GL_FUNC(glGetShaderiv, "2.0");
|
256
260
|
program = (GLuint)NUM2UINT(arg1);
|
257
261
|
fptr_glGetShaderiv(program,GL_INFO_LOG_LENGTH,&max_size);
|
258
|
-
|
262
|
+
CHECK_GLERROR_FROM("glGetShaderiv");
|
259
263
|
if (max_size<=0)
|
260
264
|
return rb_str_new2("");
|
261
265
|
buffer = ALLOC_N(GLchar,max_size+1);
|
@@ -263,7 +267,7 @@ VALUE obj,arg1;
|
|
263
267
|
fptr_glGetShaderInfoLog(program,max_size,&ret_length,buffer);
|
264
268
|
ret_buffer = rb_str_new(buffer, ret_length);
|
265
269
|
xfree(buffer);
|
266
|
-
|
270
|
+
CHECK_GLERROR_FROM("glGetShaderInfoLog");
|
267
271
|
return ret_buffer;
|
268
272
|
}
|
269
273
|
|
@@ -276,16 +280,16 @@ VALUE obj,arg1;
|
|
276
280
|
GLint max_size = 0;
|
277
281
|
GLsizei ret_length = 0;
|
278
282
|
VALUE buffer;
|
279
|
-
LOAD_GL_FUNC(glGetShaderSource,"2.0")
|
280
|
-
LOAD_GL_FUNC(glGetShaderiv,"2.0")
|
283
|
+
LOAD_GL_FUNC(glGetShaderSource, "2.0");
|
284
|
+
LOAD_GL_FUNC(glGetShaderiv, "2.0");
|
281
285
|
shader = (GLuint)NUM2UINT(arg1);
|
282
286
|
fptr_glGetShaderiv(shader,GL_SHADER_SOURCE_LENGTH,&max_size);
|
283
|
-
|
287
|
+
CHECK_GLERROR_FROM("glGetShaderiv");
|
284
288
|
if (max_size==0)
|
285
289
|
rb_raise(rb_eTypeError, "Can't determine maximum shader source length");
|
286
290
|
buffer = allocate_buffer_with_string(max_size-1);
|
287
291
|
fptr_glGetShaderSource(shader,max_size,&ret_length,RSTRING_PTR(buffer));
|
288
|
-
|
292
|
+
CHECK_GLERROR_FROM("glGetShaderSource");
|
289
293
|
return buffer;
|
290
294
|
}
|
291
295
|
|
@@ -296,11 +300,12 @@ VALUE obj,arg1,arg2;
|
|
296
300
|
{
|
297
301
|
GLuint program;
|
298
302
|
GLint ret;
|
299
|
-
LOAD_GL_FUNC(glGetUniformLocation,"2.0")
|
303
|
+
LOAD_GL_FUNC(glGetUniformLocation, "2.0");
|
300
304
|
program=(GLuint)NUM2UINT(arg1);
|
301
305
|
Check_Type(arg2,T_STRING);
|
302
|
-
ret = fptr_glGetUniformLocation(program,RSTRING_PTR(arg2));
|
303
|
-
|
306
|
+
ret = fptr_glGetUniformLocation(program, RSTRING_PTR(arg2));
|
307
|
+
|
308
|
+
CHECK_GLERROR_FROM("glGetUniformLocation");
|
304
309
|
return INT2NUM(ret);
|
305
310
|
}
|
306
311
|
|
@@ -317,13 +322,13 @@ VALUE obj,arg1,arg2; \
|
|
317
322
|
GLenum uniform_type = 0; \
|
318
323
|
GLint uniform_size = 0; \
|
319
324
|
\
|
320
|
-
LOAD_GL_FUNC(gl##_name_,"2.0") \
|
321
|
-
LOAD_GL_FUNC(glGetActiveUniform,"2.0") \
|
325
|
+
LOAD_GL_FUNC(gl##_name_, "2.0"); \
|
326
|
+
LOAD_GL_FUNC(glGetActiveUniform, "2.0"); \
|
322
327
|
program = (GLuint)NUM2UINT(arg1); \
|
323
328
|
location = (GLint)NUM2INT(arg2); \
|
324
329
|
\
|
325
330
|
fptr_glGetActiveUniform(program,location,0,NULL,&unused,&uniform_type,NULL); \
|
326
|
-
|
331
|
+
CHECK_GLERROR_FROM("glGetActiveUniform"); \
|
327
332
|
if (uniform_type==0) \
|
328
333
|
rb_raise(rb_eTypeError, "Can't determine the uniform's type"); \
|
329
334
|
\
|
@@ -331,7 +336,7 @@ VALUE obj,arg1,arg2; \
|
|
331
336
|
\
|
332
337
|
memset(params,0,16*sizeof(_type_)); \
|
333
338
|
fptr_gl##_name_(program,location,params); \
|
334
|
-
RET_ARRAY_OR_SINGLE(uniform_size,RETCONV_##_type_,params) \
|
339
|
+
RET_ARRAY_OR_SINGLE("gl" #_name_, uniform_size, RETCONV_##_type_, params); \
|
335
340
|
}
|
336
341
|
|
337
342
|
GETUNIFORM_FUNC(GetUniformfv,GLfloat)
|
@@ -348,7 +353,7 @@ VALUE obj,arg1,arg2; \
|
|
348
353
|
GLenum pname; \
|
349
354
|
_type_ params[4] = {0,0,0,0}; \
|
350
355
|
GLint size; \
|
351
|
-
LOAD_GL_FUNC(gl##_name_,"2.0") \
|
356
|
+
LOAD_GL_FUNC(gl##_name_, "2.0"); \
|
352
357
|
index = (GLuint)NUM2UINT(arg1); \
|
353
358
|
pname = (GLenum)NUM2INT(arg2); \
|
354
359
|
if (pname==GL_CURRENT_VERTEX_ATTRIB) \
|
@@ -356,7 +361,7 @@ VALUE obj,arg1,arg2; \
|
|
356
361
|
else \
|
357
362
|
size = 1; \
|
358
363
|
fptr_gl##_name_(index,pname,params); \
|
359
|
-
RET_ARRAY_OR_SINGLE(size,RETCONV_##_type_,params) \
|
364
|
+
RET_ARRAY_OR_SINGLE("gl" #_name_, size, RETCONV_##_type_, params); \
|
360
365
|
}
|
361
366
|
|
362
367
|
GETVERTEXATTRIB_FUNC(GetVertexAttribdv,GLdouble)
|
@@ -373,7 +378,7 @@ VALUE obj,arg1,arg2;
|
|
373
378
|
GLenum pname;
|
374
379
|
GLint params[4] = {0,0,0,0};
|
375
380
|
GLint size;
|
376
|
-
LOAD_GL_FUNC(glGetVertexAttribiv,"2.0")
|
381
|
+
LOAD_GL_FUNC(glGetVertexAttribiv, "2.0");
|
377
382
|
index = (GLuint)NUM2UINT(arg1);
|
378
383
|
pname = (GLenum)NUM2INT(arg2);
|
379
384
|
if (pname==GL_CURRENT_VERTEX_ATTRIB)
|
@@ -381,7 +386,8 @@ VALUE obj,arg1,arg2;
|
|
381
386
|
else
|
382
387
|
size = 1;
|
383
388
|
fptr_glGetVertexAttribiv(index,pname,params);
|
384
|
-
|
389
|
+
RET_ARRAY_OR_SINGLE_BOOL("glGetVertexAttribiv", size, cond_GLBOOL2RUBY,
|
390
|
+
pname, params);
|
385
391
|
}
|
386
392
|
|
387
393
|
|
@@ -393,7 +399,7 @@ gl_GetVertexAttribPointerv(obj,arg1)
|
|
393
399
|
VALUE obj,arg1;
|
394
400
|
{
|
395
401
|
GLuint index;
|
396
|
-
LOAD_GL_FUNC(glGetVertexAttribPointerv,"2.0")
|
402
|
+
LOAD_GL_FUNC(glGetVertexAttribPointerv, "2.0");
|
397
403
|
index =(GLuint) NUM2INT(arg1);
|
398
404
|
if (index>_MAX_VERTEX_ATTRIBS)
|
399
405
|
rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);
|
@@ -409,13 +415,13 @@ VALUE obj,arg1,arg2;
|
|
409
415
|
GLuint shader;
|
410
416
|
GLint length;
|
411
417
|
GLchar *str;
|
412
|
-
LOAD_GL_FUNC(glShaderSource,"2.0")
|
418
|
+
LOAD_GL_FUNC(glShaderSource, "2.0");
|
413
419
|
shader = (GLuint)NUM2UINT(arg1);
|
414
420
|
Check_Type(arg2,T_STRING);
|
415
421
|
str = RSTRING_PTR(arg2);
|
416
422
|
length = (GLint)RSTRING_LENINT(arg2);
|
417
423
|
fptr_glShaderSource(shader,1,&str,&length);
|
418
|
-
|
424
|
+
CHECK_GLERROR_FROM("glShaderSource");
|
419
425
|
return Qnil;
|
420
426
|
}
|
421
427
|
|
@@ -428,7 +434,7 @@ VALUE obj,arg1,arg2; \
|
|
428
434
|
GLint location; \
|
429
435
|
GLsizei count; \
|
430
436
|
_type_ *value; \
|
431
|
-
LOAD_GL_FUNC(gl##_name_,"2.0") \
|
437
|
+
LOAD_GL_FUNC(gl##_name_,"2.0"); \
|
432
438
|
Check_Type(arg2,T_ARRAY); \
|
433
439
|
count = (GLsizei)RARRAY_LENINT(arg2); \
|
434
440
|
if (count<=0 || (count % _size_) != 0) \
|
@@ -438,7 +444,7 @@ VALUE obj,arg1,arg2; \
|
|
438
444
|
_conv_(arg2,value,count); \
|
439
445
|
fptr_gl##_name_(location,count / _size_,value); \
|
440
446
|
xfree(value); \
|
441
|
-
|
447
|
+
CHECK_GLERROR_FROM("gl" #_name_); \
|
442
448
|
return Qnil; \
|
443
449
|
}
|
444
450
|
|
@@ -462,15 +468,15 @@ VALUE obj,arg1,arg2,arg3; \
|
|
462
468
|
GLsizei count; \
|
463
469
|
GLboolean transpose; \
|
464
470
|
GLfloat *value; \
|
465
|
-
LOAD_GL_FUNC(gl##_name_,"2.0") \
|
471
|
+
LOAD_GL_FUNC(gl##_name_, "2.0"); \
|
466
472
|
location = (GLint)NUM2INT(arg1); \
|
467
|
-
count = (GLsizei)RARRAY_LENINT(rb_funcall(rb_Array(arg3),rb_intern("flatten"),0)); \
|
468
|
-
transpose = (GLboolean)
|
473
|
+
count = (GLsizei)RARRAY_LENINT(rb_funcall(rb_Array(arg3), rb_intern("flatten"), 0)); \
|
474
|
+
transpose = (GLboolean)RUBYBOOL2GL(arg2); \
|
469
475
|
value = ALLOC_N(GLfloat, count); \
|
470
476
|
ary2cmatfloatcount(arg3,value,_size_,_size_); \
|
471
477
|
fptr_gl##_name_(location,count / (_size_*_size_),transpose,value); \
|
472
478
|
xfree(value); \
|
473
|
-
|
479
|
+
CHECK_GLERROR_FROM("gl" #_name_); \
|
474
480
|
return Qnil; \
|
475
481
|
}
|
476
482
|
|
@@ -487,11 +493,11 @@ VALUE obj,arg1,arg2; \
|
|
487
493
|
{ \
|
488
494
|
GLuint index; \
|
489
495
|
_type_ v[_size_]; \
|
490
|
-
LOAD_GL_FUNC(gl##_name_,"2.0")
|
496
|
+
LOAD_GL_FUNC(gl##_name_, "2.0"); \
|
491
497
|
index = (GLuint)NUM2UINT(arg1); \
|
492
498
|
_conv_(arg2,v,_size_); \
|
493
499
|
fptr_gl##_name_(index,v); \
|
494
|
-
|
500
|
+
CHECK_GLERROR_FROM("gl" #_name_); \
|
495
501
|
return Qnil; \
|
496
502
|
}
|
497
503
|
|
@@ -530,11 +536,11 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
|
530
536
|
GLenum type;
|
531
537
|
GLboolean normalized;
|
532
538
|
GLsizei stride;
|
533
|
-
LOAD_GL_FUNC(glVertexAttribPointer,"2.0")
|
539
|
+
LOAD_GL_FUNC(glVertexAttribPointer, "2.0");
|
534
540
|
index = (GLuint)NUM2UINT(arg1);
|
535
541
|
size = (GLuint)NUM2UINT(arg2);
|
536
542
|
type = (GLenum)NUM2INT(arg3);
|
537
|
-
normalized = (GLboolean)
|
543
|
+
normalized = (GLboolean)RUBYBOOL2GL(arg4);
|
538
544
|
stride = (GLsizei)NUM2UINT(arg5);
|
539
545
|
if (index>_MAX_VERTEX_ATTRIBS)
|
540
546
|
rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);
|
@@ -549,7 +555,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
|
549
555
|
g_VertexAttrib_ptr[index] = data;
|
550
556
|
fptr_glVertexAttribPointer(index,size,type,normalized,stride,(GLvoid *)RSTRING_PTR(data));
|
551
557
|
}
|
552
|
-
|
558
|
+
CHECK_GLERROR_FROM("glVertexAttribPointer");
|
553
559
|
return Qnil;
|
554
560
|
}
|
555
561
|
|
data/ext/{gl → opengl}/gl-2.1.c
RENAMED
@@ -13,7 +13,7 @@
|
|
13
13
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
14
14
|
*/
|
15
15
|
|
16
|
-
#include "
|
16
|
+
#include "common.h"
|
17
17
|
|
18
18
|
#define UNIFORMMATRIX_FUNC(_x_,_y_) \
|
19
19
|
static void (APIENTRY * fptr_glUniformMatrix##_x_##x##_y_##fv)(GLint,GLsizei,GLboolean,GLfloat *); \
|
@@ -25,15 +25,15 @@ VALUE obj,arg1,arg2,arg3; \
|
|
25
25
|
GLsizei count; \
|
26
26
|
GLboolean transpose; \
|
27
27
|
GLfloat *value; \
|
28
|
-
LOAD_GL_FUNC(glUniformMatrix##_x_##x##_y_##fv,"2.1") \
|
28
|
+
LOAD_GL_FUNC(glUniformMatrix##_x_##x##_y_##fv,"2.1"); \
|
29
29
|
location = (GLint)NUM2INT(arg1); \
|
30
30
|
count = (GLsizei)RARRAY_LENINT(rb_funcall(rb_Array(arg3),rb_intern("flatten"),0)); \
|
31
|
-
transpose = (GLboolean)
|
31
|
+
transpose = (GLboolean)RUBYBOOL2GL(arg2); \
|
32
32
|
value = ALLOC_N(GLfloat, count); \
|
33
33
|
ary2cmatfloatcount(arg3,value, _x_, _y_); \
|
34
34
|
fptr_glUniformMatrix##_x_##x##_y_##fv(location,count /(_x_ * _y_),transpose,value); \
|
35
35
|
xfree(value); \
|
36
|
-
|
36
|
+
CHECK_GLERROR_FROM("glUniformMatrix" #_x_ "x" #_y_ "fv"); \
|
37
37
|
return Qnil; \
|
38
38
|
}
|
39
39
|
|
File without changes
|
@@ -13,7 +13,7 @@
|
|
13
13
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
14
14
|
*/
|
15
15
|
|
16
|
-
#include "
|
16
|
+
#include "common.h"
|
17
17
|
|
18
18
|
VALUE error_checking = Qtrue;
|
19
19
|
|
@@ -21,7 +21,7 @@ VALUE Class_GLError;
|
|
21
21
|
|
22
22
|
#define BUFSIZE 256
|
23
23
|
|
24
|
-
void check_for_glerror(
|
24
|
+
void check_for_glerror(const char *caller)
|
25
25
|
{
|
26
26
|
GLenum error;
|
27
27
|
|
@@ -31,9 +31,16 @@ void check_for_glerror(void)
|
|
31
31
|
return;
|
32
32
|
} else { /* process errors */
|
33
33
|
const char *error_string;
|
34
|
+
const char *from = "";
|
34
35
|
int queued_errors = 0;
|
35
36
|
char message[BUFSIZE];
|
36
37
|
VALUE exc;
|
38
|
+
|
39
|
+
if (caller) {
|
40
|
+
from = " for ";
|
41
|
+
} else {
|
42
|
+
caller = "";
|
43
|
+
}
|
37
44
|
|
38
45
|
/* check for queued errors */
|
39
46
|
for(queued_errors = 0;
|
@@ -54,9 +61,10 @@ void check_for_glerror(void)
|
|
54
61
|
}
|
55
62
|
|
56
63
|
if (queued_errors==0) {
|
57
|
-
snprintf(message,BUFSIZE,"%s",error_string);
|
64
|
+
snprintf(message, BUFSIZE, "%s%s%s", error_string, from, caller);
|
58
65
|
} else {
|
59
|
-
snprintf(message,BUFSIZE,"%s [%i queued error(s) cleaned]",
|
66
|
+
snprintf(message, BUFSIZE, "%s%s%s [%i queued error(s) cleaned]",
|
67
|
+
error_string, from, caller, queued_errors);
|
60
68
|
}
|
61
69
|
|
62
70
|
exc = rb_funcall(Class_GLError, rb_intern("new"), 2, rb_str_new2(message), INT2NUM(error));
|