ruby-opengl 0.40.1 → 0.50.0
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.
- data/Rakefile +2 -2
- data/doc/build_install.txt +48 -28
- data/doc/extensions.txt +361 -0
- data/doc/history.txt +8 -2
- data/doc/requirements_and_design.txt +0 -13
- data/doc/roadmap.txt +11 -13
- data/doc/supplies/page_template.html +11 -5
- data/doc/thanks.txt +2 -4
- data/doc/tutorial.txt +1 -4
- data/examples/{nehe_lesson02.rb → NeHe/nehe_lesson02.rb} +0 -0
- data/examples/{nehe_lesson03.rb → NeHe/nehe_lesson03.rb} +0 -0
- data/examples/{nehe_lesson04.rb → NeHe/nehe_lesson04.rb} +0 -0
- data/examples/{nehe_lesson05.rb → NeHe/nehe_lesson05.rb} +0 -0
- data/examples/NeHe/nehe_lesson36.rb +303 -0
- data/examples/OrangeBook/3Dlabs-License.txt +33 -0
- data/examples/OrangeBook/brick.frag +36 -0
- data/examples/OrangeBook/brick.rb +388 -0
- data/examples/OrangeBook/brick.vert +41 -0
- data/examples/OrangeBook/particle.frag +17 -0
- data/examples/OrangeBook/particle.rb +424 -0
- data/examples/OrangeBook/particle.vert +38 -0
- data/examples/README +13 -83
- data/examples/RedBook/aaindex.rb +97 -0
- data/examples/RedBook/aapoly.rb +142 -0
- data/examples/RedBook/aargb.rb +119 -0
- data/examples/RedBook/accanti.rb +162 -0
- data/examples/RedBook/accpersp.rb +215 -0
- data/examples/RedBook/alpha.rb +123 -0
- data/examples/RedBook/alpha3D.rb +158 -0
- data/examples/RedBook/bezcurve.rb +105 -0
- data/examples/RedBook/bezmesh.rb +137 -0
- data/examples/RedBook/checker.rb +124 -0
- data/examples/RedBook/clip.rb +95 -0
- data/examples/RedBook/colormat.rb +135 -0
- data/examples/RedBook/cube.rb +69 -0
- data/examples/RedBook/depthcue.rb +99 -0
- data/examples/RedBook/dof.rb +205 -0
- data/examples/{legacy → RedBook}/double.rb +59 -58
- data/examples/{legacy → RedBook}/drawf.rb +47 -54
- data/examples/RedBook/feedback.rb +145 -0
- data/examples/RedBook/fog.rb +167 -0
- data/examples/RedBook/font.rb +151 -0
- data/examples/RedBook/hello.rb +79 -0
- data/examples/RedBook/image.rb +137 -0
- data/examples/{legacy → RedBook}/jitter.rb +60 -62
- data/examples/RedBook/lines.rb +128 -0
- data/examples/RedBook/list.rb +111 -0
- data/examples/RedBook/material.rb +275 -0
- data/examples/RedBook/mipmap.rb +156 -0
- data/examples/{legacy → RedBook}/model.rb +66 -72
- data/examples/{legacy → RedBook}/movelight.rb +67 -75
- data/examples/RedBook/pickdepth.rb +179 -0
- data/examples/{legacy → RedBook}/planet.rb +62 -66
- data/examples/RedBook/quadric.rb +158 -0
- data/examples/RedBook/robot.rb +115 -0
- data/examples/RedBook/select.rb +196 -0
- data/examples/RedBook/smooth.rb +95 -0
- data/examples/RedBook/stencil.rb +163 -0
- data/examples/RedBook/stroke.rb +167 -0
- data/examples/RedBook/surface.rb +166 -0
- data/examples/RedBook/teaambient.rb +132 -0
- data/examples/RedBook/teapots.rb +182 -0
- data/examples/RedBook/tess.rb +183 -0
- data/examples/RedBook/texbind.rb +147 -0
- data/examples/RedBook/texgen.rb +169 -0
- data/examples/RedBook/texturesurf.rb +128 -0
- data/examples/RedBook/varray.rb +159 -0
- data/examples/RedBook/wrap.rb +148 -0
- data/examples/misc/anisotropic.rb +194 -0
- data/examples/misc/font-glut.rb +46 -0
- data/examples/{plane.rb → misc/plane.rb} +0 -0
- data/examples/misc/readpixel.rb +65 -0
- data/examples/{smooth.rb → misc/smooth.rb} +0 -0
- data/examples/{test.rb → misc/test.rb} +0 -0
- data/ext/common/common.h +252 -70
- data/ext/common/gl-enums.h +6102 -7334
- data/ext/common/gl-types.h +47 -0
- data/ext/common/glu-enums.h +469 -0
- data/ext/gl/gl-1.0-1.1.c +842 -2464
- data/ext/gl/gl-1.2.c +217 -281
- data/ext/gl/gl-1.3.c +113 -133
- data/ext/gl/gl-1.4.c +98 -334
- data/ext/gl/gl-1.5.c +28 -34
- data/ext/gl/gl-2.0.c +26 -235
- data/ext/gl/gl-2.1.c +31 -124
- data/ext/gl/gl-enums.c +786 -631
- data/ext/gl/gl-ext-arb.c +66 -0
- data/ext/gl/gl-ext-ext.c +218 -0
- data/ext/gl/gl.c +138 -31
- data/ext/gl/mkrf_conf.rb +1 -0
- data/ext/glu/glu-enums.c +163 -0
- data/ext/glu/glu.c +1003 -1205
- data/ext/glu/mkrf_conf.rb +1 -0
- data/ext/glut/glut.c +1056 -1175
- data/lib/opengl.rb +90 -3
- data/test/tc_common.rb +26 -13
- data/test/tc_ext_arb.rb +73 -0
- data/test/tc_ext_ext.rb +74 -0
- data/test/tc_func_12.rb +8 -8
- data/test/tc_func_13.rb +17 -11
- data/test/tc_func_14.rb +8 -8
- data/test/tc_func_15.rb +190 -2
- data/test/tc_func_20.rb +36 -10
- data/test/tc_func_21.rb +445 -2
- data/test/tc_glu.rb +305 -0
- data/test/tc_misc.rb +1 -0
- metadata +84 -68
- data/doc/screenshots.txt +0 -23
- data/examples/legacy/COPYRIGHT +0 -8
- data/examples/legacy/aaindex.rb +0 -98
- data/examples/legacy/aapoly.rb +0 -153
- data/examples/legacy/aargb.rb +0 -139
- data/examples/legacy/accanti.rb +0 -159
- data/examples/legacy/accpersp.rb +0 -216
- data/examples/legacy/alpha.rb +0 -133
- data/examples/legacy/alpha3D.rb +0 -165
- data/examples/legacy/bezcurve.rb +0 -107
- data/examples/legacy/bezmesh.rb +0 -131
- data/examples/legacy/checker.rb +0 -121
- data/examples/legacy/clip.rb +0 -104
- data/examples/legacy/colormat.rb +0 -145
- data/examples/legacy/cube.rb +0 -73
- data/examples/legacy/depthcue.rb +0 -101
- data/examples/legacy/dof.rb +0 -212
- data/examples/legacy/feedback.rb +0 -152
- data/examples/legacy/fog.rb +0 -172
- data/examples/legacy/font-glut.rb +0 -41
- data/examples/legacy/font.rb +0 -158
- data/examples/legacy/hello.rb +0 -75
- data/examples/legacy/image.rb +0 -145
- data/examples/legacy/lines.rb +0 -135
- data/examples/legacy/list.rb +0 -120
- data/examples/legacy/material.rb +0 -290
- data/examples/legacy/mipmap.rb +0 -159
- data/examples/legacy/pickdepth.rb +0 -180
- data/examples/legacy/quadric.rb +0 -180
- data/examples/legacy/readpixel.rb +0 -59
- data/examples/legacy/robot.rb +0 -120
- data/examples/legacy/select.rb +0 -207
- data/examples/legacy/smooth.rb +0 -41
- data/examples/legacy/stencil.rb +0 -154
- data/examples/legacy/stroke.rb +0 -170
- data/examples/legacy/surface.rb +0 -170
- data/examples/legacy/teaambient.rb +0 -132
- data/examples/legacy/teapots.rb +0 -188
- data/examples/legacy/tess.rb +0 -222
- data/examples/legacy/texbind.rb +0 -157
- data/examples/legacy/texgen.rb +0 -171
- data/examples/legacy/texturesurf.rb +0 -128
- data/examples/legacy/varray.rb +0 -167
- data/examples/legacy/wrap.rb +0 -158
- data/lib/gl_prev.rb +0 -46
- data/lib/glu_prev.rb +0 -46
- data/lib/glut_prev.rb +0 -45
data/ext/gl/gl-1.3.c
CHANGED
@@ -13,41 +13,12 @@
|
|
13
13
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
14
14
|
*/
|
15
15
|
|
16
|
-
#ifdef __APPLE__
|
17
|
-
#include <OpenGL/gl.h>
|
18
|
-
#elif defined WIN32
|
19
|
-
#include <windows.h>
|
20
|
-
#include <GL/gl.h>
|
21
|
-
#else
|
22
|
-
#include <GL/gl.h>
|
23
|
-
#endif
|
24
16
|
#include "../common/common.h"
|
25
17
|
|
26
18
|
/* OpenGL 1.3 functions */
|
27
19
|
|
28
|
-
|
29
|
-
|
30
|
-
gl_ActiveTexture(obj,arg1)
|
31
|
-
VALUE obj,arg1;
|
32
|
-
{
|
33
|
-
GLenum texture;
|
34
|
-
LOAD_GL_FUNC(glActiveTexture)
|
35
|
-
texture = (GLenum)NUM2INT(arg1);
|
36
|
-
fptr_glActiveTexture(texture);
|
37
|
-
return Qnil;
|
38
|
-
}
|
39
|
-
|
40
|
-
static void (APIENTRY * fptr_glClientActiveTexture)(GLenum);
|
41
|
-
static VALUE
|
42
|
-
gl_ClientActiveTexture(obj,arg1)
|
43
|
-
VALUE obj,arg1;
|
44
|
-
{
|
45
|
-
GLenum texture;
|
46
|
-
LOAD_GL_FUNC(glClientActiveTexture)
|
47
|
-
texture = (GLenum)NUM2INT(arg1);
|
48
|
-
fptr_glClientActiveTexture(texture);
|
49
|
-
return Qnil;
|
50
|
-
}
|
20
|
+
GL_SIMPLE_FUNC_LOAD(ActiveTexture,1,GLenum,NUM2INT)
|
21
|
+
GL_SIMPLE_FUNC_LOAD(ClientActiveTexture,1,GLenum,NUM2INT)
|
51
22
|
|
52
23
|
static void (APIENTRY * fptr_glMultiTexCoord1d)(GLenum,GLdouble);
|
53
24
|
static VALUE
|
@@ -379,54 +350,25 @@ GLMULTITEXCOORD_VFUNC(i)
|
|
379
350
|
GLMULTITEXCOORD_VFUNC(s)
|
380
351
|
#undef GLTEXCOORD_VFUNC
|
381
352
|
|
382
|
-
|
383
|
-
static void (APIENTRY *
|
384
|
-
static VALUE
|
385
|
-
|
386
|
-
VALUE obj,arg1;
|
387
|
-
{
|
388
|
-
|
389
|
-
LOAD_GL_FUNC(
|
390
|
-
|
391
|
-
|
392
|
-
return Qnil;
|
393
|
-
}
|
394
|
-
|
395
|
-
static void (APIENTRY * fptr_glLoadTransposeMatrixd)(const GLdouble[]);
|
396
|
-
static VALUE
|
397
|
-
gl_LoadTransposeMatrixd(obj,arg1)
|
398
|
-
VALUE obj,arg1;
|
399
|
-
{
|
400
|
-
GLdouble m[4*4];
|
401
|
-
LOAD_GL_FUNC(glLoadTransposeMatrixd)
|
402
|
-
ary2cmat4x4dbl(arg1, m);
|
403
|
-
fptr_glLoadTransposeMatrixd(m);
|
404
|
-
return Qnil;
|
353
|
+
#define TRANSPOSEMATRIX_FUNC(_name_,_type_,_shorttype_) \
|
354
|
+
static void (APIENTRY * fptr_gl##_name_)(const _type_[]); \
|
355
|
+
static VALUE \
|
356
|
+
gl_##_name_(obj,arg1) \
|
357
|
+
VALUE obj,arg1; \
|
358
|
+
{ \
|
359
|
+
_type_ m[4*4]; \
|
360
|
+
LOAD_GL_FUNC(gl##_name_) \
|
361
|
+
ary2cmat4x4##_shorttype_(arg1, m); \
|
362
|
+
fptr_gl##_name_(m); \
|
363
|
+
return Qnil; \
|
405
364
|
}
|
406
365
|
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
{
|
412
|
-
GLfloat m[4*4];
|
413
|
-
LOAD_GL_FUNC(glMultTransposeMatrixf)
|
414
|
-
ary2cmat4x4flt(arg1, m);
|
415
|
-
fptr_glMultTransposeMatrixf(m);
|
416
|
-
return Qnil;
|
417
|
-
}
|
366
|
+
TRANSPOSEMATRIX_FUNC(LoadTransposeMatrixf,GLfloat,flt)
|
367
|
+
TRANSPOSEMATRIX_FUNC(LoadTransposeMatrixd,GLdouble,dbl)
|
368
|
+
TRANSPOSEMATRIX_FUNC(MultTransposeMatrixf,GLfloat,flt)
|
369
|
+
TRANSPOSEMATRIX_FUNC(MultTransposeMatrixd,GLdouble,dbl)
|
418
370
|
|
419
|
-
|
420
|
-
static VALUE
|
421
|
-
gl_MultTransposeMatrixd(obj,arg1)
|
422
|
-
VALUE obj,arg1;
|
423
|
-
{
|
424
|
-
GLdouble m[4*4];
|
425
|
-
LOAD_GL_FUNC(glMultTransposeMatrixd)
|
426
|
-
ary2cmat4x4dbl(arg1, m);
|
427
|
-
fptr_glMultTransposeMatrixd(m);
|
428
|
-
return Qnil;
|
429
|
-
}
|
371
|
+
#undef TRANSPOSEMATRIX_FUNC
|
430
372
|
|
431
373
|
static void (APIENTRY * fptr_glSampleCoverage)(GLclampf,GLboolean);
|
432
374
|
static VALUE
|
@@ -465,17 +407,21 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
|
|
465
407
|
depth = (GLsizei)NUM2UINT(arg6);
|
466
408
|
border = (GLint)NUM2INT(arg7);
|
467
409
|
imagesize = (GLsizei)NUM2UINT(arg8);
|
468
|
-
if (
|
469
|
-
|
470
|
-
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg9)->len);
|
471
|
-
pixels = RSTRING(arg9)->ptr;
|
472
|
-
} else if (NIL_P(arg9)) {
|
473
|
-
pixels = NULL;
|
410
|
+
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
411
|
+
fptr_glCompressedTexImage3D(target,level,internalformat,width,height,depth,border,imagesize,(GLvoid *)NUM2INT(arg9));
|
474
412
|
} else {
|
475
|
-
|
476
|
-
|
413
|
+
if (TYPE(arg9) == T_STRING) {
|
414
|
+
if (RSTRING(arg9)->len < imagesize)
|
415
|
+
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg9)->len);
|
416
|
+
pixels = RSTRING(arg9)->ptr;
|
417
|
+
} else if (NIL_P(arg9)) {
|
418
|
+
pixels = NULL;
|
419
|
+
} else {
|
420
|
+
Check_Type(arg9,T_STRING); /* force exception */
|
421
|
+
return Qnil;
|
422
|
+
}
|
423
|
+
fptr_glCompressedTexImage3D(target,level,internalformat,width,height,depth,border,imagesize,pixels);
|
477
424
|
}
|
478
|
-
fptr_glCompressedTexImage3D(target,level,internalformat,width,height,depth,border,imagesize,pixels);
|
479
425
|
return Qnil;
|
480
426
|
}
|
481
427
|
|
@@ -500,17 +446,21 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
|
|
500
446
|
height = (GLsizei)NUM2UINT(arg5);
|
501
447
|
border = (GLint)NUM2INT(arg6);
|
502
448
|
imagesize = (GLsizei)NUM2UINT(arg7);
|
503
|
-
if (
|
504
|
-
|
505
|
-
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg8)->len);
|
506
|
-
pixels = RSTRING(arg8)->ptr;
|
507
|
-
} else if (NIL_P(arg8)) {
|
508
|
-
pixels = NULL;
|
449
|
+
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
450
|
+
fptr_glCompressedTexImage2D(target,level,internalformat,width,height,border,imagesize,(GLvoid *)NUM2INT(arg8));
|
509
451
|
} else {
|
510
|
-
|
511
|
-
|
452
|
+
if (TYPE(arg8) == T_STRING) {
|
453
|
+
if (RSTRING(arg8)->len < imagesize)
|
454
|
+
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg8)->len);
|
455
|
+
pixels = RSTRING(arg8)->ptr;
|
456
|
+
} else if (NIL_P(arg8)) {
|
457
|
+
pixels = NULL;
|
458
|
+
} else {
|
459
|
+
Check_Type(arg8,T_STRING); /* force exception */
|
460
|
+
return Qnil;
|
461
|
+
}
|
462
|
+
fptr_glCompressedTexImage2D(target,level,internalformat,width,height,border,imagesize,pixels);
|
512
463
|
}
|
513
|
-
fptr_glCompressedTexImage2D(target,level,internalformat,width,height,border,imagesize,pixels);
|
514
464
|
return Qnil;
|
515
465
|
}
|
516
466
|
|
@@ -533,17 +483,21 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
|
|
533
483
|
width = (GLsizei)NUM2UINT(arg4);
|
534
484
|
border = (GLint)NUM2INT(arg5);
|
535
485
|
imagesize = (GLsizei)NUM2UINT(arg6);
|
536
|
-
if (
|
537
|
-
|
538
|
-
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg7)->len);
|
539
|
-
pixels = RSTRING(arg7)->ptr;
|
540
|
-
} else if (NIL_P(arg7)) {
|
541
|
-
pixels = NULL;
|
486
|
+
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
487
|
+
fptr_glCompressedTexImage1D(target,level,internalformat,width,border,imagesize,(GLvoid *)NUM2INT(arg7));
|
542
488
|
} else {
|
543
|
-
|
544
|
-
|
489
|
+
if (TYPE(arg7) == T_STRING) {
|
490
|
+
if (RSTRING(arg7)->len < imagesize)
|
491
|
+
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg7)->len);
|
492
|
+
pixels = RSTRING(arg7)->ptr;
|
493
|
+
} else if (NIL_P(arg7)) {
|
494
|
+
pixels = NULL;
|
495
|
+
} else {
|
496
|
+
Check_Type(arg7,T_STRING); /* force exception */
|
497
|
+
return Qnil;
|
498
|
+
}
|
499
|
+
fptr_glCompressedTexImage1D(target,level,internalformat,width,border,imagesize,pixels);
|
545
500
|
}
|
546
|
-
fptr_glCompressedTexImage1D(target,level,internalformat,width,border,imagesize,pixels);
|
547
501
|
return Qnil;
|
548
502
|
}
|
549
503
|
|
@@ -574,15 +528,19 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11;
|
|
574
528
|
depth = (GLsizei)NUM2UINT(arg8);
|
575
529
|
format = (GLenum)NUM2INT(arg9);
|
576
530
|
imagesize = (GLsizei)NUM2UINT(arg10);
|
577
|
-
if (
|
578
|
-
|
579
|
-
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg11)->len);
|
580
|
-
pixels = RSTRING(arg11)->ptr;
|
531
|
+
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
532
|
+
fptr_glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imagesize,(GLvoid *)NUM2INT(arg11));
|
581
533
|
} else {
|
582
|
-
|
583
|
-
|
534
|
+
if (TYPE(arg11) == T_STRING) {
|
535
|
+
if (RSTRING(arg11)->len < imagesize)
|
536
|
+
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg11)->len);
|
537
|
+
pixels = RSTRING(arg11)->ptr;
|
538
|
+
} else {
|
539
|
+
Check_Type(arg11,T_STRING); /* force exception */
|
540
|
+
return Qnil;
|
541
|
+
}
|
542
|
+
fptr_glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imagesize,pixels);
|
584
543
|
}
|
585
|
-
fptr_glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imagesize,pixels);
|
586
544
|
return Qnil;
|
587
545
|
}
|
588
546
|
|
@@ -609,15 +567,19 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
|
|
609
567
|
height = (GLsizei)NUM2UINT(arg6);
|
610
568
|
format = (GLenum)NUM2INT(arg7);
|
611
569
|
imagesize = (GLsizei)NUM2UINT(arg8);
|
612
|
-
if (
|
613
|
-
|
614
|
-
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg9)->len);
|
615
|
-
pixels = RSTRING(arg9)->ptr;
|
570
|
+
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
571
|
+
fptr_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imagesize,(GLvoid *)NUM2INT(arg9));
|
616
572
|
} else {
|
617
|
-
|
618
|
-
|
573
|
+
if (TYPE(arg9) == T_STRING) {
|
574
|
+
if (RSTRING(arg9)->len < imagesize)
|
575
|
+
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg9)->len);
|
576
|
+
pixels = RSTRING(arg9)->ptr;
|
577
|
+
} else {
|
578
|
+
Check_Type(arg9,T_STRING); /* force exception */
|
579
|
+
return Qnil;
|
580
|
+
}
|
581
|
+
fptr_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imagesize,pixels);
|
619
582
|
}
|
620
|
-
fptr_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imagesize,pixels);
|
621
583
|
return Qnil;
|
622
584
|
}
|
623
585
|
|
@@ -640,34 +602,52 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
|
|
640
602
|
width = (GLsizei)NUM2UINT(arg4);
|
641
603
|
format = (GLenum)NUM2INT(arg5);
|
642
604
|
imagesize = (GLsizei)NUM2UINT(arg6);
|
643
|
-
if (
|
644
|
-
|
645
|
-
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg7)->len);
|
646
|
-
pixels = RSTRING(arg7)->ptr;
|
605
|
+
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
606
|
+
fptr_glCompressedTexSubImage1D(target,level,xoffset,width,format,imagesize,(GLvoid *)NUM2INT(arg7));
|
647
607
|
} else {
|
648
|
-
|
649
|
-
|
608
|
+
if (TYPE(arg7) == T_STRING) {
|
609
|
+
if (RSTRING(arg7)->len < imagesize)
|
610
|
+
rb_raise(rb_eArgError, "string length:%d",RSTRING(arg7)->len);
|
611
|
+
pixels = RSTRING(arg7)->ptr;
|
612
|
+
} else {
|
613
|
+
Check_Type(arg7,T_STRING); /* force exception */
|
614
|
+
return Qnil;
|
615
|
+
}
|
616
|
+
fptr_glCompressedTexSubImage1D(target,level,xoffset,width,format,imagesize,pixels);
|
650
617
|
}
|
651
|
-
fptr_glCompressedTexSubImage1D(target,level,xoffset,width,format,imagesize,pixels);
|
652
618
|
return Qnil;
|
653
619
|
}
|
654
620
|
|
655
621
|
static void (APIENTRY * fptr_glGetCompressedTexImage)(GLenum,GLint,GLvoid*);
|
656
622
|
static VALUE
|
657
|
-
gl_GetCompressedTexImage(
|
658
|
-
|
623
|
+
gl_GetCompressedTexImage(argc,argv,obj)
|
624
|
+
int argc;
|
625
|
+
VALUE *argv;
|
626
|
+
VALUE obj;
|
659
627
|
{
|
660
628
|
GLenum target;
|
661
629
|
GLint lod;
|
662
630
|
GLsizei size = 0;
|
663
631
|
VALUE data;
|
632
|
+
VALUE args[3];
|
633
|
+
int numargs;
|
664
634
|
LOAD_GL_FUNC(glGetCompressedTexImage)
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
635
|
+
numargs = rb_scan_args(argc, argv, "21", &args[0], &args[1], &args[2]);
|
636
|
+
target = (GLenum)NUM2INT(args[0]);
|
637
|
+
lod = (GLenum)NUM2INT(args[1]);
|
638
|
+
switch(numargs) {
|
639
|
+
default:
|
640
|
+
case 2:
|
641
|
+
if (CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING))
|
642
|
+
rb_raise(rb_eArgError, "Pixel pack buffer bound, but offset argument missing");
|
643
|
+
glGetTexLevelParameteriv(target,lod,GL_TEXTURE_COMPRESSED_IMAGE_SIZE,&size); /* 1.0 function */
|
644
|
+
data = allocate_buffer_with_string(size);
|
645
|
+
fptr_glGetCompressedTexImage(target,lod,(GLvoid*)RSTRING(data)->ptr);
|
646
|
+
return data;
|
647
|
+
case 3:
|
648
|
+
fptr_glGetCompressedTexImage(target,lod,(GLvoid*)NUM2INT(args[2]));
|
649
|
+
return Qnil;
|
650
|
+
}
|
671
651
|
}
|
672
652
|
|
673
653
|
void gl_init_functions_1_3(VALUE module)
|
@@ -701,7 +681,7 @@ void gl_init_functions_1_3(VALUE module)
|
|
701
681
|
rb_define_module_function(module, "glCompressedTexSubImage3D", gl_CompressedTexSubImage3D, 11);
|
702
682
|
rb_define_module_function(module, "glCompressedTexSubImage2D", gl_CompressedTexSubImage2D, 9);
|
703
683
|
rb_define_module_function(module, "glCompressedTexSubImage1D", gl_CompressedTexSubImage1D, 7);
|
704
|
-
rb_define_module_function(module, "glGetCompressedTexImage", gl_GetCompressedTexImage,
|
684
|
+
rb_define_module_function(module, "glGetCompressedTexImage", gl_GetCompressedTexImage, -1);
|
705
685
|
|
706
686
|
/* Additional functions */
|
707
687
|
|
data/ext/gl/gl-1.4.c
CHANGED
@@ -13,47 +13,28 @@
|
|
13
13
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
14
14
|
*/
|
15
15
|
|
16
|
-
#ifdef __APPLE__
|
17
|
-
#include <OpenGL/gl.h>
|
18
|
-
#elif defined WIN32
|
19
|
-
#include <windows.h>
|
20
|
-
#include <GL/gl.h>
|
21
|
-
#else
|
22
|
-
#include <GL/gl.h>
|
23
|
-
#endif
|
24
16
|
#include "../common/common.h"
|
25
17
|
|
26
18
|
/* OpenGL 1.4 functions */
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
static void (APIENTRY * fptr_glFogCoordf)(GLfloat);
|
47
|
-
static VALUE
|
48
|
-
gl_FogCoordf(obj,arg1)
|
49
|
-
VALUE obj,arg1;
|
50
|
-
{
|
51
|
-
GLfloat coord;
|
52
|
-
LOAD_GL_FUNC(glFogCoordf)
|
53
|
-
coord=(GLfloat)NUM2DBL(arg1);
|
54
|
-
fptr_glFogCoordf(coord);
|
55
|
-
return Qnil;
|
56
|
-
}
|
19
|
+
GL_SIMPLE_FUNC_LOAD(BlendFuncSeparate,4,GLenum,NUM2INT)
|
20
|
+
GL_SIMPLE_FUNC_LOAD(FogCoordf,1,GLfloat,NUM2DBL)
|
21
|
+
GL_SIMPLE_FUNC_LOAD(FogCoordd,1,GLdouble,NUM2DBL)
|
22
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3b,3,GLbyte,NUM2INT)
|
23
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3d,3,GLdouble,NUM2DBL)
|
24
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3f,3,GLfloat,NUM2DBL)
|
25
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3i,3,GLint,NUM2INT)
|
26
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3s,3,GLshort,NUM2INT)
|
27
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3ub,3,GLubyte,NUM2INT)
|
28
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3ui,3,GLuint,NUM2UINT)
|
29
|
+
GL_SIMPLE_FUNC_LOAD(SecondaryColor3us,3,GLushort,NUM2INT)
|
30
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos2d,2,GLdouble,NUM2DBL)
|
31
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos2f,2,GLfloat,NUM2DBL)
|
32
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos2i,2,GLint,NUM2INT)
|
33
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos2s,2,GLshort,NUM2INT)
|
34
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos3d,3,GLdouble,NUM2DBL)
|
35
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos3f,3,GLfloat,NUM2DBL)
|
36
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos3i,3,GLint,NUM2INT)
|
37
|
+
GL_SIMPLE_FUNC_LOAD(WindowPos3s,3,GLshort,NUM2INT)
|
57
38
|
|
58
39
|
static void (APIENTRY * fptr_glFogCoordfv)(GLfloat *);
|
59
40
|
static VALUE
|
@@ -68,18 +49,6 @@ VALUE obj,arg1;
|
|
68
49
|
return Qnil;
|
69
50
|
}
|
70
51
|
|
71
|
-
static void (APIENTRY * fptr_glFogCoordd)(GLdouble);
|
72
|
-
static VALUE
|
73
|
-
gl_FogCoordd(obj,arg1)
|
74
|
-
VALUE obj,arg1;
|
75
|
-
{
|
76
|
-
GLdouble coord;
|
77
|
-
LOAD_GL_FUNC(glFogCoordd)
|
78
|
-
coord=(GLdouble)NUM2DBL(arg1);
|
79
|
-
fptr_glFogCoordd(coord);
|
80
|
-
return Qnil;
|
81
|
-
}
|
82
|
-
|
83
52
|
static void (APIENTRY * fptr_glFogCoorddv)(GLdouble *);
|
84
53
|
static VALUE
|
85
54
|
gl_FogCoorddv(obj,arg1)
|
@@ -104,32 +73,38 @@ VALUE obj,arg1,arg2,arg3;
|
|
104
73
|
LOAD_GL_FUNC(glFogCoordPointer)
|
105
74
|
type = (GLenum)NUM2INT(arg1);
|
106
75
|
stride = (GLsizei)NUM2UINT(arg2);
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
76
|
+
if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
|
77
|
+
g_FogCoord_ptr = arg3;
|
78
|
+
fptr_glFogCoordPointer(type, stride, (const GLvoid*)NUM2INT(arg3));
|
79
|
+
} else {
|
80
|
+
Check_Type(arg3, T_STRING);
|
81
|
+
rb_str_freeze(arg3);
|
82
|
+
g_FogCoord_ptr = arg3;
|
83
|
+
fptr_glFogCoordPointer(type, stride, (const GLvoid*)RSTRING(arg3)->ptr);
|
84
|
+
}
|
111
85
|
return Qnil;
|
112
86
|
}
|
113
87
|
|
114
88
|
static void (APIENTRY * fptr_glMultiDrawArrays)(GLenum,GLint*,GLsizei*,GLsizei);
|
115
89
|
static VALUE
|
116
|
-
gl_MultiDrawArrays(obj,arg1,arg2,arg3
|
117
|
-
VALUE obj,arg1,arg2,arg3
|
90
|
+
gl_MultiDrawArrays(obj,arg1,arg2,arg3)
|
91
|
+
VALUE obj,arg1,arg2,arg3;
|
118
92
|
{
|
119
|
-
/* TODO: check ary1,ary2 if len < primcount then raise */
|
120
|
-
/* stringy ? */
|
121
93
|
GLenum mode;
|
122
|
-
GLsizei primcount;
|
123
94
|
GLint *ary1;
|
124
95
|
GLsizei *ary2;
|
96
|
+
int len1,len2;
|
125
97
|
LOAD_GL_FUNC(glMultiDrawArrays)
|
98
|
+
len1 = RARRAY(arg2)->len;
|
99
|
+
len2 = RARRAY(arg3)->len;
|
100
|
+
if (len1!=len2)
|
101
|
+
rb_raise(rb_eArgError, "Passed arrays must have same length");
|
126
102
|
mode = (GLenum)NUM2INT(arg1);
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
ary2cint(
|
131
|
-
|
132
|
-
fptr_glMultiDrawArrays(mode,ary1,ary2,primcount);
|
103
|
+
ary1 = ALLOC_N(GLint,len1);
|
104
|
+
ary2 = ALLOC_N(GLsizei,len2);
|
105
|
+
ary2cint(arg2,ary1,len1);
|
106
|
+
ary2cint(arg3,ary2,len2);
|
107
|
+
fptr_glMultiDrawArrays(mode,ary1,ary2,len1);
|
133
108
|
xfree(ary1);
|
134
109
|
xfree(ary2);
|
135
110
|
return Qnil;
|
@@ -137,8 +112,10 @@ VALUE obj,arg1,arg2,arg3,arg4;
|
|
137
112
|
|
138
113
|
static void (APIENTRY * fptr_glMultiDrawElements)(GLenum,const GLsizei *,GLenum,GLvoid **,GLsizei);
|
139
114
|
static VALUE
|
140
|
-
gl_MultiDrawElements(
|
141
|
-
|
115
|
+
gl_MultiDrawElements(argc,argv,obj)
|
116
|
+
int argc;
|
117
|
+
VALUE *argv;
|
118
|
+
VALUE obj;
|
142
119
|
{
|
143
120
|
GLenum mode;
|
144
121
|
GLenum type;
|
@@ -147,21 +124,51 @@ VALUE obj,arg1,arg2,arg3;
|
|
147
124
|
GLint size;
|
148
125
|
RArray *ary;
|
149
126
|
int i;
|
127
|
+
VALUE args[4];
|
150
128
|
LOAD_GL_FUNC(glMultiDrawElements)
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
129
|
+
switch (rb_scan_args(argc, argv, "31", &args[0], &args[1], &args[2],&args[3])) {
|
130
|
+
default:
|
131
|
+
case 3:
|
132
|
+
if (CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING))
|
133
|
+
rb_raise(rb_eArgError, "Element array buffer bound, but offsets array missing");
|
134
|
+
mode = (GLenum)NUM2INT(args[0]);
|
135
|
+
type = (GLenum)NUM2INT(args[1]);
|
136
|
+
Check_Type(args[2],T_ARRAY);
|
137
|
+
ary = RARRAY(args[2]);
|
138
|
+
size = ary->len;
|
139
|
+
counts = ALLOC_N(GLsizei,size);
|
140
|
+
indices = ALLOC_N(GLvoid*,size);
|
141
|
+
for (i=0;i<size;i++) {
|
142
|
+
indices[i] = RSTRING(ary->ptr[i])->ptr;
|
143
|
+
counts[i] = RSTRING(ary->ptr[i])->len;
|
144
|
+
}
|
145
|
+
fptr_glMultiDrawElements(mode,counts,type,indices,size);
|
146
|
+
xfree(counts);
|
147
|
+
xfree(indices);
|
148
|
+
break;
|
149
|
+
case 4:
|
150
|
+
if (!CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING))
|
151
|
+
rb_raise(rb_eArgError, "Element array buffer not bound");
|
152
|
+
mode = (GLenum)NUM2INT(args[0]);
|
153
|
+
type = (GLenum)NUM2INT(args[1]);
|
154
|
+
Check_Type(args[2],T_ARRAY);
|
155
|
+
Check_Type(args[3],T_ARRAY);
|
156
|
+
if (RARRAY(args[2])->len != RARRAY(args[3])->len)
|
157
|
+
rb_raise(rb_eArgError, "Count and indices offset array must have same length");
|
158
|
+
|
159
|
+
size = RARRAY(args[2])->len;
|
160
|
+
|
161
|
+
counts = ALLOC_N(GLsizei,size);
|
162
|
+
indices = ALLOC_N(GLvoid*,size);
|
163
|
+
for (i=0;i<size;i++) {
|
164
|
+
counts[i] = NUM2INT(rb_ary_entry(args[2],i));
|
165
|
+
indices[i] = (GLvoid *) NUM2INT(rb_ary_entry(args[3],i));
|
166
|
+
}
|
167
|
+
fptr_glMultiDrawElements(mode,counts,type,indices,size);
|
168
|
+
xfree(counts);
|
169
|
+
xfree(indices);
|
170
|
+
break;
|
161
171
|
}
|
162
|
-
fptr_glMultiDrawElements(mode,counts,type,indices,size);
|
163
|
-
xfree(counts);
|
164
|
-
xfree(indices);
|
165
172
|
return Qnil;
|
166
173
|
}
|
167
174
|
|
@@ -233,134 +240,6 @@ VALUE obj,arg1,arg2;
|
|
233
240
|
return Qnil;
|
234
241
|
}
|
235
242
|
|
236
|
-
static void (APIENTRY * fptr_glSecondaryColor3b)(GLbyte,GLbyte,GLbyte);
|
237
|
-
static VALUE
|
238
|
-
gl_SecondaryColor3b(obj,arg1,arg2,arg3)
|
239
|
-
VALUE obj,arg1,arg2,arg3;
|
240
|
-
{
|
241
|
-
GLbyte red;
|
242
|
-
GLbyte green;
|
243
|
-
GLbyte blue;
|
244
|
-
LOAD_GL_FUNC(glSecondaryColor3b)
|
245
|
-
red = (GLbyte)NUM2INT(arg1);
|
246
|
-
green = (GLbyte)NUM2INT(arg2);
|
247
|
-
blue = (GLbyte)NUM2INT(arg3);
|
248
|
-
fptr_glSecondaryColor3b(red,green,blue);
|
249
|
-
return Qnil;
|
250
|
-
}
|
251
|
-
|
252
|
-
static void (APIENTRY * fptr_glSecondaryColor3d)(GLdouble,GLdouble,GLdouble);
|
253
|
-
static VALUE
|
254
|
-
gl_SecondaryColor3d(obj,arg1,arg2,arg3)
|
255
|
-
VALUE obj,arg1,arg2,arg3;
|
256
|
-
{
|
257
|
-
GLdouble red;
|
258
|
-
GLdouble green;
|
259
|
-
GLdouble blue;
|
260
|
-
LOAD_GL_FUNC(glSecondaryColor3d)
|
261
|
-
red = (GLdouble)NUM2DBL(arg1);
|
262
|
-
green = (GLdouble)NUM2DBL(arg2);
|
263
|
-
blue = (GLdouble)NUM2DBL(arg3);
|
264
|
-
fptr_glSecondaryColor3d(red,green,blue);
|
265
|
-
return Qnil;
|
266
|
-
}
|
267
|
-
|
268
|
-
static void (APIENTRY * fptr_glSecondaryColor3f)(GLfloat,GLfloat,GLfloat);
|
269
|
-
static VALUE
|
270
|
-
gl_SecondaryColor3f(obj,arg1,arg2,arg3)
|
271
|
-
VALUE obj,arg1,arg2,arg3;
|
272
|
-
{
|
273
|
-
GLfloat red;
|
274
|
-
GLfloat green;
|
275
|
-
GLfloat blue;
|
276
|
-
LOAD_GL_FUNC(glSecondaryColor3f)
|
277
|
-
red = (GLfloat)NUM2DBL(arg1);
|
278
|
-
green = (GLfloat)NUM2DBL(arg2);
|
279
|
-
blue = (GLfloat)NUM2DBL(arg3);
|
280
|
-
fptr_glSecondaryColor3f(red,green,blue);
|
281
|
-
return Qnil;
|
282
|
-
}
|
283
|
-
|
284
|
-
static void (APIENTRY * fptr_glSecondaryColor3i)(GLint,GLint,GLint);
|
285
|
-
static VALUE
|
286
|
-
gl_SecondaryColor3i(obj,arg1,arg2,arg3)
|
287
|
-
VALUE obj,arg1,arg2,arg3;
|
288
|
-
{
|
289
|
-
GLint red;
|
290
|
-
GLint green;
|
291
|
-
GLint blue;
|
292
|
-
LOAD_GL_FUNC(glSecondaryColor3i)
|
293
|
-
red = (GLint)NUM2INT(arg1);
|
294
|
-
green = (GLint)NUM2INT(arg2);
|
295
|
-
blue = (GLint)NUM2INT(arg3);
|
296
|
-
fptr_glSecondaryColor3i(red,green,blue);
|
297
|
-
return Qnil;
|
298
|
-
}
|
299
|
-
|
300
|
-
static void (APIENTRY * fptr_glSecondaryColor3s)(GLshort,GLshort,GLshort);
|
301
|
-
static VALUE
|
302
|
-
gl_SecondaryColor3s(obj,arg1,arg2,arg3)
|
303
|
-
VALUE obj,arg1,arg2,arg3;
|
304
|
-
{
|
305
|
-
GLshort red;
|
306
|
-
GLshort green;
|
307
|
-
GLshort blue;
|
308
|
-
LOAD_GL_FUNC(glSecondaryColor3s)
|
309
|
-
red = (GLshort)NUM2INT(arg1);
|
310
|
-
green = (GLshort)NUM2INT(arg2);
|
311
|
-
blue = (GLshort)NUM2INT(arg3);
|
312
|
-
fptr_glSecondaryColor3s(red,green,blue);
|
313
|
-
return Qnil;
|
314
|
-
}
|
315
|
-
|
316
|
-
static void (APIENTRY * fptr_glSecondaryColor3ub)(GLubyte,GLubyte,GLubyte);
|
317
|
-
static VALUE
|
318
|
-
gl_SecondaryColor3ub(obj,arg1,arg2,arg3)
|
319
|
-
VALUE obj,arg1,arg2,arg3;
|
320
|
-
{
|
321
|
-
GLubyte red;
|
322
|
-
GLubyte green;
|
323
|
-
GLubyte blue;
|
324
|
-
LOAD_GL_FUNC(glSecondaryColor3ub)
|
325
|
-
red = (GLubyte)NUM2INT(arg1);
|
326
|
-
green = (GLubyte)NUM2INT(arg2);
|
327
|
-
blue = (GLubyte)NUM2INT(arg3);
|
328
|
-
fptr_glSecondaryColor3ub(red,green,blue);
|
329
|
-
return Qnil;
|
330
|
-
}
|
331
|
-
|
332
|
-
static void (APIENTRY * fptr_glSecondaryColor3ui)(GLuint,GLuint,GLuint);
|
333
|
-
static VALUE
|
334
|
-
gl_SecondaryColor3ui(obj,arg1,arg2,arg3)
|
335
|
-
VALUE obj,arg1,arg2,arg3;
|
336
|
-
{
|
337
|
-
GLuint red;
|
338
|
-
GLuint green;
|
339
|
-
GLuint blue;
|
340
|
-
LOAD_GL_FUNC(glSecondaryColor3ui)
|
341
|
-
red = (GLuint)NUM2UINT(arg1);
|
342
|
-
green = (GLuint)NUM2UINT(arg2);
|
343
|
-
blue = (GLuint)NUM2UINT(arg3);
|
344
|
-
fptr_glSecondaryColor3ui(red,green,blue);
|
345
|
-
return Qnil;
|
346
|
-
}
|
347
|
-
|
348
|
-
static void (APIENTRY * fptr_glSecondaryColor3us)(GLushort,GLushort,GLushort);
|
349
|
-
static VALUE
|
350
|
-
gl_SecondaryColor3us(obj,arg1,arg2,arg3)
|
351
|
-
VALUE obj,arg1,arg2,arg3;
|
352
|
-
{
|
353
|
-
GLushort red;
|
354
|
-
GLushort green;
|
355
|
-
GLushort blue;
|
356
|
-
LOAD_GL_FUNC(glSecondaryColor3us)
|
357
|
-
red = (GLushort)NUM2INT(arg1);
|
358
|
-
green = (GLushort)NUM2INT(arg2);
|
359
|
-
blue = (GLushort)NUM2INT(arg3);
|
360
|
-
fptr_glSecondaryColor3us(red,green,blue);
|
361
|
-
return Qnil;
|
362
|
-
}
|
363
|
-
|
364
243
|
#define GLSECONDARYCOLOR_VFUNC(_type_) \
|
365
244
|
static VALUE \
|
366
245
|
gl_SecondaryColor##_type_##v(argc,argv,obj) \
|
@@ -419,130 +298,15 @@ VALUE obj,arg1,arg2,arg3,arg4;
|
|
419
298
|
size = (GLint)NUM2INT(arg1);
|
420
299
|
type = (GLenum)NUM2INT(arg2);
|
421
300
|
stride = (GLsizei)NUM2UINT(arg3);
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
gl_WindowPos2d(obj,arg1,arg2)
|
432
|
-
VALUE obj,arg1,arg2;
|
433
|
-
{
|
434
|
-
GLdouble x;
|
435
|
-
GLdouble y;
|
436
|
-
LOAD_GL_FUNC(glWindowPos2d)
|
437
|
-
x = (GLdouble)NUM2DBL(arg1);
|
438
|
-
y = (GLdouble)NUM2DBL(arg2);
|
439
|
-
fptr_glWindowPos2d(x,y);
|
440
|
-
return Qnil;
|
441
|
-
}
|
442
|
-
|
443
|
-
static void (APIENTRY * fptr_glWindowPos2f)(GLfloat,GLfloat);
|
444
|
-
static VALUE
|
445
|
-
gl_WindowPos2f(obj,arg1,arg2)
|
446
|
-
VALUE obj,arg1,arg2;
|
447
|
-
{
|
448
|
-
GLfloat x;
|
449
|
-
GLfloat y;
|
450
|
-
LOAD_GL_FUNC(glWindowPos2f)
|
451
|
-
x = (GLfloat)NUM2DBL(arg1);
|
452
|
-
y = (GLfloat)NUM2DBL(arg2);
|
453
|
-
fptr_glWindowPos2f(x,y);
|
454
|
-
return Qnil;
|
455
|
-
}
|
456
|
-
|
457
|
-
static void (APIENTRY * fptr_glWindowPos2i)(GLint,GLint);
|
458
|
-
static VALUE
|
459
|
-
gl_WindowPos2i(obj,arg1,arg2)
|
460
|
-
VALUE obj,arg1,arg2;
|
461
|
-
{
|
462
|
-
GLint x;
|
463
|
-
GLint y;
|
464
|
-
LOAD_GL_FUNC(glWindowPos2i)
|
465
|
-
x = (GLint)NUM2INT(arg1);
|
466
|
-
y = (GLint)NUM2INT(arg2);
|
467
|
-
fptr_glWindowPos2i(x,y);
|
468
|
-
return Qnil;
|
469
|
-
}
|
470
|
-
|
471
|
-
static void (APIENTRY * fptr_glWindowPos2s)(GLshort,GLshort);
|
472
|
-
static VALUE
|
473
|
-
gl_WindowPos2s(obj,arg1,arg2)
|
474
|
-
VALUE obj,arg1,arg2;
|
475
|
-
{
|
476
|
-
GLshort x;
|
477
|
-
GLshort y;
|
478
|
-
LOAD_GL_FUNC(glWindowPos2s)
|
479
|
-
x = (GLshort)NUM2INT(arg1);
|
480
|
-
y = (GLshort)NUM2INT(arg2);
|
481
|
-
fptr_glWindowPos2s(x,y);
|
482
|
-
return Qnil;
|
483
|
-
}
|
484
|
-
|
485
|
-
static void (APIENTRY * fptr_glWindowPos3d)(GLdouble,GLdouble,GLdouble);
|
486
|
-
static VALUE
|
487
|
-
gl_WindowPos3d(obj,arg1,arg2,arg3)
|
488
|
-
VALUE obj,arg1,arg2,arg3;
|
489
|
-
{
|
490
|
-
GLdouble x;
|
491
|
-
GLdouble y;
|
492
|
-
GLdouble z;
|
493
|
-
LOAD_GL_FUNC(glWindowPos3d)
|
494
|
-
x = (GLdouble)NUM2DBL(arg1);
|
495
|
-
y = (GLdouble)NUM2DBL(arg2);
|
496
|
-
z = (GLdouble)NUM2DBL(arg3);
|
497
|
-
fptr_glWindowPos3d(x,y,z);
|
498
|
-
return Qnil;
|
499
|
-
}
|
500
|
-
|
501
|
-
static void (APIENTRY * fptr_glWindowPos3f)(GLfloat,GLfloat,GLfloat);
|
502
|
-
static VALUE
|
503
|
-
gl_WindowPos3f(obj,arg1,arg2,arg3)
|
504
|
-
VALUE obj,arg1,arg2,arg3;
|
505
|
-
{
|
506
|
-
GLfloat x;
|
507
|
-
GLfloat y;
|
508
|
-
GLfloat z;
|
509
|
-
LOAD_GL_FUNC(glWindowPos3f)
|
510
|
-
x = (GLfloat)NUM2DBL(arg1);
|
511
|
-
y = (GLfloat)NUM2DBL(arg2);
|
512
|
-
z = (GLfloat)NUM2DBL(arg3);
|
513
|
-
fptr_glWindowPos3f(x,y,z);
|
514
|
-
return Qnil;
|
515
|
-
}
|
516
|
-
|
517
|
-
static void (APIENTRY * fptr_glWindowPos3i)(GLint,GLint,GLint);
|
518
|
-
static VALUE
|
519
|
-
gl_WindowPos3i(obj,arg1,arg2,arg3)
|
520
|
-
VALUE obj,arg1,arg2,arg3;
|
521
|
-
{
|
522
|
-
GLint x;
|
523
|
-
GLint y;
|
524
|
-
GLint z;
|
525
|
-
LOAD_GL_FUNC(glWindowPos3i)
|
526
|
-
x = (GLint)NUM2INT(arg1);
|
527
|
-
y = (GLint)NUM2INT(arg2);
|
528
|
-
z = (GLint)NUM2INT(arg3);
|
529
|
-
fptr_glWindowPos3i(x,y,z);
|
530
|
-
return Qnil;
|
531
|
-
}
|
532
|
-
|
533
|
-
static void (APIENTRY * fptr_glWindowPos3s)(GLshort,GLshort,GLshort);
|
534
|
-
static VALUE
|
535
|
-
gl_WindowPos3s(obj,arg1,arg2,arg3)
|
536
|
-
VALUE obj,arg1,arg2,arg3;
|
537
|
-
{
|
538
|
-
GLshort x;
|
539
|
-
GLshort y;
|
540
|
-
GLshort z;
|
541
|
-
LOAD_GL_FUNC(glWindowPos3s)
|
542
|
-
x = (GLshort)NUM2INT(arg1);
|
543
|
-
y = (GLshort)NUM2INT(arg2);
|
544
|
-
z = (GLshort)NUM2INT(arg3);
|
545
|
-
fptr_glWindowPos3s(x,y,z);
|
301
|
+
if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
|
302
|
+
g_SecondaryColor_ptr = arg4;
|
303
|
+
fptr_glSecondaryColorPointer(size,type, stride, (const GLvoid*)NUM2INT(arg4));
|
304
|
+
} else {
|
305
|
+
Check_Type(arg4, T_STRING);
|
306
|
+
rb_str_freeze(arg4);
|
307
|
+
g_SecondaryColor_ptr = arg4;
|
308
|
+
fptr_glSecondaryColorPointer(size,type, stride, (const GLvoid*)RSTRING(arg4)->ptr);
|
309
|
+
}
|
546
310
|
return Qnil;
|
547
311
|
}
|
548
312
|
|
@@ -602,8 +366,8 @@ void gl_init_functions_1_4(VALUE module)
|
|
602
366
|
rb_define_module_function(module, "glFogCoordd", gl_FogCoordd, 1);
|
603
367
|
rb_define_module_function(module, "glFogCoorddv", gl_FogCoorddv, 1);
|
604
368
|
rb_define_module_function(module, "glFogCoordPointer", gl_FogCoordPointer, 3);
|
605
|
-
rb_define_module_function(module, "glMultiDrawArrays", gl_MultiDrawArrays,
|
606
|
-
rb_define_module_function(module, "glMultiDrawElements", gl_MultiDrawElements,
|
369
|
+
rb_define_module_function(module, "glMultiDrawArrays", gl_MultiDrawArrays, 3);
|
370
|
+
rb_define_module_function(module, "glMultiDrawElements", gl_MultiDrawElements, -1);
|
607
371
|
rb_define_module_function(module, "glPointParameterf", gl_PointParameterf, 2);
|
608
372
|
rb_define_module_function(module, "glPointParameterfv", gl_PointParameterfv, 2);
|
609
373
|
rb_define_module_function(module, "glPointParameteri", gl_PointParameteri, 2);
|