ruby-opengl 0.50.0 → 0.60.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +15 -11
- data/doc/build_install.txt +10 -6
- data/doc/extensions.txt.in +348 -0
- data/doc/history.txt +4 -0
- data/doc/roadmap.txt +4 -6
- data/doc/scientific_use.txt +7 -0
- data/doc/supplies/page_template.html +2 -1
- data/doc/thanks.txt +5 -0
- data/doc/tutorial.txt +431 -121
- data/examples/NeHe/nehe_lesson02.rb +1 -1
- data/examples/NeHe/nehe_lesson03.rb +1 -1
- data/examples/NeHe/nehe_lesson04.rb +1 -1
- data/examples/NeHe/nehe_lesson05.rb +1 -1
- data/examples/NeHe/nehe_lesson36.rb +1 -1
- data/examples/OrangeBook/brick.rb +3 -15
- data/examples/OrangeBook/particle.rb +2 -20
- data/examples/RedBook/aapoly.rb +1 -1
- data/examples/RedBook/aargb.rb +2 -2
- data/examples/RedBook/accanti.rb +1 -1
- data/examples/RedBook/accpersp.rb +1 -1
- data/examples/RedBook/alpha.rb +2 -2
- data/examples/RedBook/alpha3D.rb +1 -1
- data/examples/RedBook/bezcurve.rb +1 -1
- data/examples/RedBook/bezmesh.rb +1 -1
- data/examples/RedBook/checker.rb +1 -1
- data/examples/RedBook/clip.rb +1 -1
- data/examples/RedBook/colormat.rb +1 -1
- data/examples/RedBook/cube.rb +1 -1
- data/examples/RedBook/depthcue.rb +1 -1
- data/examples/RedBook/dof.rb +1 -1
- data/examples/RedBook/double.rb +1 -1
- data/examples/RedBook/drawf.rb +1 -1
- data/examples/RedBook/feedback.rb +1 -1
- data/examples/RedBook/fog.rb +1 -1
- data/examples/RedBook/font.rb +2 -2
- data/examples/RedBook/hello.rb +1 -1
- data/examples/RedBook/image.rb +4 -4
- data/examples/RedBook/lines.rb +1 -1
- data/examples/RedBook/list.rb +1 -1
- data/examples/RedBook/material.rb +1 -1
- data/examples/RedBook/mipmap.rb +1 -1
- data/examples/RedBook/model.rb +1 -1
- data/examples/RedBook/movelight.rb +1 -1
- data/examples/RedBook/pickdepth.rb +1 -1
- data/examples/RedBook/planet.rb +5 -5
- data/examples/RedBook/quadric.rb +1 -1
- data/examples/RedBook/robot.rb +5 -5
- data/examples/RedBook/select.rb +1 -1
- data/examples/RedBook/smooth.rb +1 -1
- data/examples/RedBook/stencil.rb +1 -1
- data/examples/RedBook/stroke.rb +2 -2
- data/examples/RedBook/surface.rb +1 -1
- data/examples/RedBook/teaambient.rb +1 -1
- data/examples/RedBook/teapots.rb +1 -1
- data/examples/RedBook/tess.rb +1 -1
- data/examples/RedBook/texbind.rb +1 -1
- data/examples/RedBook/texgen.rb +5 -5
- data/examples/RedBook/texturesurf.rb +1 -1
- data/examples/RedBook/varray.rb +1 -1
- data/examples/RedBook/wrap.rb +5 -5
- data/examples/misc/OGLBench.rb +337 -0
- data/examples/misc/anisotropic.rb +1 -1
- data/examples/misc/fbo_test.rb +356 -0
- data/examples/misc/font-glut.rb +1 -1
- data/examples/misc/glfwtest.rb +30 -0
- data/examples/misc/md2model.rb +15 -0
- data/examples/misc/plane.rb +1 -1
- data/examples/misc/readpixel.rb +1 -1
- data/examples/misc/sdltest.rb +34 -0
- data/examples/misc/trislam.rb +828 -0
- data/ext/common/common.h +126 -218
- data/ext/common/conv.h +244 -0
- data/ext/common/funcdef.h +280 -0
- data/ext/common/gl-error.h +23 -0
- data/ext/common/gl-types.h +14 -0
- data/ext/gl/gl-1.0-1.1.c +497 -1255
- data/ext/gl/gl-1.2.c +121 -304
- data/ext/gl/gl-1.3.c +78 -339
- data/ext/gl/gl-1.4.c +102 -164
- data/ext/gl/gl-1.5.c +42 -173
- data/ext/gl/gl-2.0.c +273 -1039
- data/ext/gl/gl-2.1.c +15 -19
- data/ext/gl/gl-enums.c +3 -2
- data/ext/gl/gl-error.c +104 -0
- data/ext/gl/gl-ext-3dfx.c +27 -0
- data/ext/gl/gl-ext-arb.c +812 -12
- data/ext/gl/gl-ext-ati.c +41 -0
- data/ext/gl/gl-ext-ext.c +791 -119
- data/ext/gl/gl-ext-gremedy.c +41 -0
- data/ext/gl/gl-ext-nv.c +679 -0
- data/ext/gl/gl.c +48 -28
- data/ext/gl/mkrf_conf.rb +13 -10
- data/ext/glu/glu-enums.c +3 -2
- data/ext/glu/glu.c +136 -41
- data/ext/glu/mkrf_conf.rb +15 -12
- data/ext/glut/glut.c +37 -80
- data/ext/glut/mkrf_conf.rb +17 -13
- data/lib/opengl.rb +29 -53
- data/test/tc_common.rb +9 -3
- data/test/tc_ext_arb.rb +397 -3
- data/test/tc_ext_ati.rb +33 -0
- data/test/tc_ext_ext.rb +479 -2
- data/test/tc_ext_gremedy.rb +36 -0
- data/test/tc_ext_nv.rb +357 -0
- data/test/tc_func_10_11.rb +93 -67
- data/test/tc_func_12.rb +11 -11
- data/test/tc_func_13.rb +38 -18
- data/test/tc_func_14.rb +2 -2
- data/test/tc_func_15.rb +10 -10
- data/test/tc_func_20.rb +20 -20
- data/test/tc_func_21.rb +53 -22
- data/test/tc_glu.rb +9 -4
- data/test/tc_misc.rb +15 -2
- metadata +22 -8
- data/doc/extensions.txt +0 -361
- data/examples/RedBook/aaindex.rb +0 -97
- data/examples/misc/smooth.rb +0 -42
- data/examples/misc/test.rb +0 -65
@@ -0,0 +1,280 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2007 Jan Dvorak <jan.dvorak@kraxnet.cz>
|
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
|
+
/* These macros are for simplification of function definition, as passing
|
17
|
+
arguments from/to OpenGL usually follows the same few patterns. It would
|
18
|
+
be probably wise to adapt the whole bindings to C++ (templates, overloaded
|
19
|
+
functions, etc.), but for now supporting ruby extension for Windows means
|
20
|
+
MSVC6, and that in turn means unspeakable horrors and pains for everyone
|
21
|
+
attempting to merely write, much less debug or maintain any template-based
|
22
|
+
code.
|
23
|
+
*/
|
24
|
+
|
25
|
+
/* Will load function pointer for function _NAME_ on first call to the
|
26
|
+
function, or raise if the OpenGL version is less then required or the
|
27
|
+
required extension is not supported */
|
28
|
+
#define LOAD_GL_FUNC(_NAME_,_VEREXT_) \
|
29
|
+
if (fptr_##_NAME_==NULL) { \
|
30
|
+
if (CheckVersionExtension(_VEREXT_)==GL_FALSE) { \
|
31
|
+
if (isdigit(_VEREXT_[0])) \
|
32
|
+
rb_raise(rb_eNotImpError,"OpenGL version %s is not available on this system",_VEREXT_); \
|
33
|
+
else \
|
34
|
+
rb_raise(rb_eNotImpError,"Extension %s is not available on this system",_VEREXT_); \
|
35
|
+
} \
|
36
|
+
fptr_##_NAME_ = load_gl_function(#_NAME_, 1); \
|
37
|
+
}
|
38
|
+
|
39
|
+
/* Macroset for defining simple functions, i.e. functions that take n arguments and
|
40
|
+
pass them to GL API function without any additional processing.
|
41
|
+
|
42
|
+
Some checking is implicit in _conversion_ argument - e.g. NUM2INT makes sure that
|
43
|
+
user is really passing type that can be converted to INT, otherwire raises.
|
44
|
+
|
45
|
+
*_LOAD version of macros are for defining functions where we load function pointer
|
46
|
+
instead of direct call - that means all functions above OpenGL 1.1 (including all extensions)
|
47
|
+
*/
|
48
|
+
|
49
|
+
#define ARGLIST0
|
50
|
+
#define ARGLIST1 ,arg1
|
51
|
+
#define ARGLIST2 ,arg1,arg2
|
52
|
+
#define ARGLIST3 ,arg1,arg2,arg3
|
53
|
+
#define ARGLIST4 ,arg1,arg2,arg3,arg4
|
54
|
+
#define ARGLIST5 ,arg1,arg2,arg3,arg4,arg5
|
55
|
+
#define ARGLIST6 ,arg1,arg2,arg3,arg4,arg5,arg6
|
56
|
+
#define ARGLIST7 ,arg1,arg2,arg3,arg4,arg5,arg6,arg7
|
57
|
+
#define ARGLIST8 ,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8
|
58
|
+
#define ARGLIST9 ,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9
|
59
|
+
#define ARGLIST10 ,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10
|
60
|
+
|
61
|
+
#define CONV_GLenum (GLenum)NUM2UINT
|
62
|
+
#define CONV_GLboolean (GLboolean)NUM2UINT
|
63
|
+
#define CONV_GLbitfield (GLbitfield)NUM2UINT
|
64
|
+
#define CONV_GLbyte (GLbyte)NUM2INT
|
65
|
+
#define CONV_GLshort (GLshort)NUM2INT
|
66
|
+
#define CONV_GLint (GLint)NUM2INT
|
67
|
+
#define CONV_GLubyte (GLubyte)NUM2UINT
|
68
|
+
#define CONV_GLushort (GLushort)NUM2UINT
|
69
|
+
#define CONV_GLuint (GLuint)NUM2UINT
|
70
|
+
#define CONV_GLsizei (GLsizei)NUM2INT
|
71
|
+
#define CONV_GLfloat (GLfloat)NUM2DBL
|
72
|
+
#define CONV_GLclampf (GLclampf)NUM2DBL
|
73
|
+
#define CONV_GLdouble (GLdouble)NUM2DBL
|
74
|
+
#define CONV_GLclampd (GLclampd)NUM2DBL
|
75
|
+
|
76
|
+
#define RETDECL_BASE(_t_) _t_ ret = (_t_) 0;
|
77
|
+
#define RETDECL_GLvoid
|
78
|
+
#define RETDECL_void
|
79
|
+
#define RETDECL_GLenum RETDECL_BASE(GLenum)
|
80
|
+
#define RETDECL_GLboolean RETDECL_BASE(GLboolean)
|
81
|
+
#define RETDECL_GLbitfield RETDECL_BASE(GLbitfield)
|
82
|
+
#define RETDECL_GLbyte RETDECL_BASE(GLbyte)
|
83
|
+
#define RETDECL_GLshort RETDECL_BASE(GLshort)
|
84
|
+
#define RETDECL_GLint RETDECL_BASE(GLint)
|
85
|
+
#define RETDECL_GLubyte RETDECL_BASE(GLubyte)
|
86
|
+
#define RETDECL_GLushort RETDECL_BASE(GLushort)
|
87
|
+
#define RETDECL_GLuint RETDECL_BASE(GLuint)
|
88
|
+
#define RETDECL_GLsizei RETDECL_BASE(GLsizei)
|
89
|
+
#define RETDECL_GLfloat RETDECL_BASE(GLfloat)
|
90
|
+
#define RETDECL_GLclampf RETDECL_BASE(GLclampf)
|
91
|
+
#define RETDECL_GLdouble RETDECL_BASE(GLdouble)
|
92
|
+
#define RETDECL_GLclampd RETDECL_BASE(GLclampd)
|
93
|
+
|
94
|
+
#define RETSTAT_GLvoid
|
95
|
+
#define RETSTAT_void
|
96
|
+
#define RETSTAT_GLenum ret=
|
97
|
+
#define RETSTAT_GLboolean ret=
|
98
|
+
#define RETSTAT_GLbitfield ret=
|
99
|
+
#define RETSTAT_GLbyte ret=
|
100
|
+
#define RETSTAT_GLshort ret=
|
101
|
+
#define RETSTAT_GLint ret=
|
102
|
+
#define RETSTAT_GLubyte ret=
|
103
|
+
#define RETSTAT_GLushort ret=
|
104
|
+
#define RETSTAT_GLuint ret=
|
105
|
+
#define RETSTAT_GLsizei ret=
|
106
|
+
#define RETSTAT_GLfloat ret=
|
107
|
+
#define RETSTAT_GLclampf ret=
|
108
|
+
#define RETSTAT_GLdouble ret=
|
109
|
+
#define RETSTAT_GLclampd ret=
|
110
|
+
|
111
|
+
#define RETCONV_GLvoid(x) Qnil
|
112
|
+
#define RETCONV_void(x) Qnil
|
113
|
+
#define RETCONV_GLenum(x) UINT2NUM(x)
|
114
|
+
#define RETCONV_GLboolean(x) GLBOOL2RUBY(x)
|
115
|
+
#define RETCONV_GLbitfield(x) UINT2NUM(x)
|
116
|
+
#define RETCONV_GLbyte(x) INT2NUM(x)
|
117
|
+
#define RETCONV_GLshort(x) INT2NUM(x)
|
118
|
+
#define RETCONV_GLint(x) INT2NUM(x)
|
119
|
+
#define RETCONV_GLubyte(x) UINT2NUM(x)
|
120
|
+
#define RETCONV_GLushort(x) UINT2NUM(x)
|
121
|
+
#define RETCONV_GLuint(x) UINT2NUM(x)
|
122
|
+
#define RETCONV_GLsizei(x) INT2NUM(x)
|
123
|
+
#define RETCONV_GLfloat(x) rb_float_new(x)
|
124
|
+
#define RETCONV_GLclampf(x) rb_float_new(x)
|
125
|
+
#define RETCONV_GLdouble(x) rb_float_new(x)
|
126
|
+
#define RETCONV_GLclampd(x) rb_float_new(x)
|
127
|
+
|
128
|
+
#define PROTOPARAM0(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) void
|
129
|
+
#define PROTOPARAM1(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1
|
130
|
+
#define PROTOPARAM2(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2
|
131
|
+
#define PROTOPARAM3(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3
|
132
|
+
#define PROTOPARAM4(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4
|
133
|
+
#define PROTOPARAM5(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4,p5
|
134
|
+
#define PROTOPARAM6(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4,p5,p6
|
135
|
+
#define PROTOPARAM7(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4,p5,p6,p7
|
136
|
+
#define PROTOPARAM8(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4,p5,p6,p7,p8
|
137
|
+
#define PROTOPARAM9(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4,p5,p6,p7,p8,p9
|
138
|
+
#define PROTOPARAM10(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) p1,p2,p3,p4,p5,p6,p7,p8,p9,p10
|
139
|
+
|
140
|
+
#define CALLCONV0(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10)
|
141
|
+
#define CALLCONV1(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1)
|
142
|
+
#define CALLCONV2(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2)
|
143
|
+
#define CALLCONV3(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3)
|
144
|
+
#define CALLCONV4(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4)
|
145
|
+
#define CALLCONV5(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4),CONV_##cv5(arg5)
|
146
|
+
#define CALLCONV6(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4),CONV_##cv5(arg5),CONV_##cv6(arg6)
|
147
|
+
#define CALLCONV7(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4),CONV_##cv5(arg5),CONV_##cv6(arg6),CONV_##cv7(arg7)
|
148
|
+
#define CALLCONV8(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4),CONV_##cv5(arg5),CONV_##cv6(arg6),CONV_##cv7(arg7),CONV_##cv8(arg8)
|
149
|
+
#define CALLCONV9(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4),CONV_##cv5(arg5),CONV_##cv6(arg6),CONV_##cv7(arg7),CONV_##cv8(arg8),CONV_##cv9(arg9)
|
150
|
+
#define CALLCONV10(cv1,cv2,cv3,cv4,cv5,cv6,cv7,cv8,cv9,cv10) CONV_##cv1(arg1),CONV_##cv2(arg2),CONV_##cv3(arg3),CONV_##cv4(arg4),CONV_##cv5(arg5),CONV_##cv6(arg6),CONV_##cv7(arg7),CONV_##cv8(arg8),CONV_##cv9(arg9),CONV_##cv10(arg10)
|
151
|
+
|
152
|
+
#define GL_FUNC_LOAD(_num_,_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10,_ver_) \
|
153
|
+
static _returntype_ (APIENTRY * fptr_gl##_name_)(PROTOPARAM##_num_(targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10)); \
|
154
|
+
static VALUE \
|
155
|
+
gl_##_name_(obj ARGLIST##_num_) \
|
156
|
+
VALUE obj ARGLIST##_num_; \
|
157
|
+
{ \
|
158
|
+
RETDECL_##_returntype_ \
|
159
|
+
LOAD_GL_FUNC(gl##_name_,_ver_) \
|
160
|
+
RETSTAT_##_returntype_ fptr_gl##_name_(CALLCONV##_num_(targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10)); \
|
161
|
+
CHECK_GLERROR \
|
162
|
+
return RETCONV_##_returntype_(ret) ; \
|
163
|
+
}
|
164
|
+
|
165
|
+
#define GL_FUNC_STATIC(_num_,_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10) \
|
166
|
+
static VALUE \
|
167
|
+
gl_##_name_(obj ARGLIST##_num_) \
|
168
|
+
VALUE obj ARGLIST##_num_; \
|
169
|
+
{ \
|
170
|
+
RETDECL_##_returntype_ \
|
171
|
+
RETSTAT_##_returntype_ gl##_name_(CALLCONV##_num_(targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10)); \
|
172
|
+
CHECK_GLERROR \
|
173
|
+
return RETCONV_##_returntype_(ret) ; \
|
174
|
+
}
|
175
|
+
|
176
|
+
#define GL_FUNC_LOAD_0(_name_,_returntype_,_ver_) GL_FUNC_LOAD(0, _name_,_returntype_,0,0,0,0,0,0,0,0,0,0,_ver_)
|
177
|
+
#define GL_FUNC_LOAD_1(_name_,_returntype_,targ1,_ver_) GL_FUNC_LOAD(1, _name_,_returntype_,targ1,0,0,0,0,0,0,0,0,0,_ver_)
|
178
|
+
#define GL_FUNC_LOAD_2(_name_,_returntype_,targ1,targ2,_ver_) GL_FUNC_LOAD(2, _name_,_returntype_,targ1,targ2,0,0,0,0,0,0,0,0,_ver_)
|
179
|
+
#define GL_FUNC_LOAD_3(_name_,_returntype_,targ1,targ2,targ3,_ver_) GL_FUNC_LOAD(3, _name_,_returntype_,targ1,targ2,targ3,0,0,0,0,0,0,0,_ver_)
|
180
|
+
#define GL_FUNC_LOAD_4(_name_,_returntype_,targ1,targ2,targ3,targ4,_ver_) GL_FUNC_LOAD(4, _name_,_returntype_,targ1,targ2,targ3,targ4,0,0,0,0,0,0,_ver_)
|
181
|
+
#define GL_FUNC_LOAD_5(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,_ver_) GL_FUNC_LOAD(5, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,0,0,0,0,0,_ver_)
|
182
|
+
#define GL_FUNC_LOAD_6(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,_ver_) GL_FUNC_LOAD(6, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,0,0,0,0,_ver_)
|
183
|
+
#define GL_FUNC_LOAD_7(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,_ver_) GL_FUNC_LOAD(7, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,0,0,0,_ver_)
|
184
|
+
#define GL_FUNC_LOAD_8(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,_ver_) GL_FUNC_LOAD(8, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,0,0,_ver_)
|
185
|
+
#define GL_FUNC_LOAD_9(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,_ver_) GL_FUNC_LOAD(9, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,0,_ver_)
|
186
|
+
#define GL_FUNC_LOAD_10(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10,_ver_) GL_FUNC_LOAD(10, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10,_ver_)
|
187
|
+
|
188
|
+
#define GL_FUNC_STATIC_0(_name_,_returntype_) GL_FUNC_STATIC(0, _name_,_returntype_,0,0,0,0,0,0,0,0,0,0)
|
189
|
+
#define GL_FUNC_STATIC_1(_name_,_returntype_,targ1) GL_FUNC_STATIC(1, _name_,_returntype_,targ1,0,0,0,0,0,0,0,0,0)
|
190
|
+
#define GL_FUNC_STATIC_2(_name_,_returntype_,targ1,targ2) GL_FUNC_STATIC(2, _name_,_returntype_,targ1,targ2,0,0,0,0,0,0,0,0)
|
191
|
+
#define GL_FUNC_STATIC_3(_name_,_returntype_,targ1,targ2,targ3) GL_FUNC_STATIC(3, _name_,_returntype_,targ1,targ2,targ3,0,0,0,0,0,0,0)
|
192
|
+
#define GL_FUNC_STATIC_4(_name_,_returntype_,targ1,targ2,targ3,targ4) GL_FUNC_STATIC(4, _name_,_returntype_,targ1,targ2,targ3,targ4,0,0,0,0,0,0)
|
193
|
+
#define GL_FUNC_STATIC_5(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5) GL_FUNC_STATIC(5, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,0,0,0,0,0)
|
194
|
+
#define GL_FUNC_STATIC_6(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6) GL_FUNC_STATIC(6, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,0,0,0,0)
|
195
|
+
#define GL_FUNC_STATIC_7(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7) GL_FUNC_STATIC(7, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,0,0,0)
|
196
|
+
#define GL_FUNC_STATIC_8(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8) GL_FUNC_STATIC(8, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,0,0)
|
197
|
+
#define GL_FUNC_STATIC_9(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9) GL_FUNC_STATIC(9, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,0)
|
198
|
+
#define GL_FUNC_STATIC_10(_name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10_ver_) GL_FUNC_STATIC(10, _name_,_returntype_,targ1,targ2,targ3,targ4,targ5,targ6,targ7,targ8,targ9,targ10)
|
199
|
+
|
200
|
+
/* Templates for glGen* and glDelete* */
|
201
|
+
|
202
|
+
#define GL_FUNC_GENOBJECTS_LOAD(_name_,_ver_) \
|
203
|
+
static void (APIENTRY * fptr_gl##_name_)(GLsizei,GLuint *); \
|
204
|
+
static VALUE gl_##_name_(VALUE obj,VALUE arg1) \
|
205
|
+
{ \
|
206
|
+
GLsizei n; \
|
207
|
+
GLuint *objects; \
|
208
|
+
VALUE ret; \
|
209
|
+
unsigned int i; \
|
210
|
+
LOAD_GL_FUNC(gl##_name_,_ver_) \
|
211
|
+
n = CONV_GLsizei(arg1); \
|
212
|
+
objects = ALLOC_N(GLuint, n); \
|
213
|
+
fptr_gl##_name_(n,objects); \
|
214
|
+
ret = rb_ary_new2(n); \
|
215
|
+
for (i = 0; i < n; i++) \
|
216
|
+
rb_ary_push(ret, RETCONV_GLuint(objects[i])); \
|
217
|
+
xfree(objects); \
|
218
|
+
CHECK_GLERROR \
|
219
|
+
return ret; \
|
220
|
+
}
|
221
|
+
|
222
|
+
#define GL_FUNC_GENOBJECTS(_name_) \
|
223
|
+
static VALUE gl_##_name_(VALUE obj,VALUE arg1) \
|
224
|
+
{ \
|
225
|
+
GLsizei n; \
|
226
|
+
GLuint *objects; \
|
227
|
+
VALUE ret; \
|
228
|
+
unsigned int i; \
|
229
|
+
n = CONV_GLsizei(arg1); \
|
230
|
+
objects = ALLOC_N(GLuint, n); \
|
231
|
+
gl##_name_(n,objects); \
|
232
|
+
ret = rb_ary_new2(n); \
|
233
|
+
for (i = 0; i < n; i++) \
|
234
|
+
rb_ary_push(ret, RETCONV_GLuint(objects[i])); \
|
235
|
+
xfree(objects); \
|
236
|
+
CHECK_GLERROR \
|
237
|
+
return ret; \
|
238
|
+
}
|
239
|
+
|
240
|
+
#define GL_FUNC_DELETEOBJECTS_LOAD(_name_,_ver_) \
|
241
|
+
static void (APIENTRY * fptr_gl##_name_)(GLsizei,const GLuint *); \
|
242
|
+
static VALUE gl_##_name_(VALUE obj,VALUE arg1) \
|
243
|
+
{ \
|
244
|
+
GLsizei n; \
|
245
|
+
LOAD_GL_FUNC(gl##_name_,_ver_) \
|
246
|
+
if (TYPE(arg1)==T_ARRAY) { \
|
247
|
+
GLuint *objects; \
|
248
|
+
n = RARRAY(arg1)->len; \
|
249
|
+
objects = ALLOC_N(GLuint,n); \
|
250
|
+
ary2cuint(arg1,objects,n); \
|
251
|
+
fptr_gl##_name_(n,objects); \
|
252
|
+
xfree(objects); \
|
253
|
+
} else { \
|
254
|
+
GLuint object; \
|
255
|
+
object = CONV_GLsizei(arg1); \
|
256
|
+
fptr_gl##_name_(1,&object); \
|
257
|
+
} \
|
258
|
+
CHECK_GLERROR \
|
259
|
+
return Qnil; \
|
260
|
+
}
|
261
|
+
|
262
|
+
#define GL_FUNC_DELETEOBJECTS(_name_) \
|
263
|
+
static VALUE gl_##_name_(VALUE obj,VALUE arg1) \
|
264
|
+
{ \
|
265
|
+
GLsizei n; \
|
266
|
+
if (TYPE(arg1)==T_ARRAY) { \
|
267
|
+
GLuint *objects; \
|
268
|
+
n = RARRAY(arg1)->len; \
|
269
|
+
objects = ALLOC_N(GLuint,n); \
|
270
|
+
ary2cuint(arg1,objects,n); \
|
271
|
+
gl##_name_(n,objects); \
|
272
|
+
xfree(objects); \
|
273
|
+
} else { \
|
274
|
+
GLuint object; \
|
275
|
+
object = CONV_GLsizei(arg1); \
|
276
|
+
gl##_name_(1,&object); \
|
277
|
+
} \
|
278
|
+
CHECK_GLERROR \
|
279
|
+
return Qnil; \
|
280
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2007 Jan Dvorak <jan.dvorak@kraxnet.cz>
|
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
|
+
void gl_init_error(VALUE);
|
17
|
+
|
18
|
+
extern VALUE error_checking;
|
19
|
+
extern VALUE inside_begin_end;
|
20
|
+
|
21
|
+
void check_for_glerror(void);
|
22
|
+
|
23
|
+
#define CHECK_GLERROR if (error_checking==Qtrue && inside_begin_end==Qfalse) check_for_glerror();
|
data/ext/common/gl-types.h
CHANGED
@@ -16,6 +16,15 @@
|
|
16
16
|
/* GL types - define if system GLheaders are not recent
|
17
17
|
Note: must be included before gl-enums.h */
|
18
18
|
|
19
|
+
#if defined(_WIN32) && defined(__GNUC__)
|
20
|
+
#include <stdint.h>
|
21
|
+
#elif defined(_WIN32)
|
22
|
+
typedef __int64 int64_t;
|
23
|
+
typedef unsigned __int64 uint64_t;
|
24
|
+
#else
|
25
|
+
#include <inttypes.h>
|
26
|
+
#endif
|
27
|
+
|
19
28
|
/* GL base */
|
20
29
|
#ifndef GL_VERSION_1_5
|
21
30
|
typedef ptrdiff_t GLintptr;
|
@@ -45,3 +54,8 @@ typedef ptrdiff_t GLsizeiptrARB;
|
|
45
54
|
#ifndef GL_NV_half_float
|
46
55
|
typedef unsigned short GLhalfNV;
|
47
56
|
#endif
|
57
|
+
|
58
|
+
#ifndef GL_EXT_timer_query
|
59
|
+
typedef int64_t GLint64EXT;
|
60
|
+
typedef uint64_t GLuint64EXT;
|
61
|
+
#endif
|
data/ext/gl/gl-1.0-1.1.c
CHANGED
@@ -23,192 +23,222 @@
|
|
23
23
|
|
24
24
|
/* OpenGL 1.0 + 1.1 functions */
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
26
|
+
GL_FUNC_STATIC_2(Accum,GLvoid, GLenum,GLfloat)
|
27
|
+
GL_FUNC_STATIC_2(AlphaFunc,GLvoid, GLenum,GLclampf)
|
28
|
+
GL_FUNC_STATIC_1(ArrayElement,GLvoid, GLint)
|
29
|
+
GL_FUNC_STATIC_2(BindTexture,GLvoid, GLenum,GLuint)
|
30
|
+
GL_FUNC_STATIC_2(BlendFunc,GLvoid, GLenum,GLenum)
|
31
|
+
GL_FUNC_STATIC_1(CallList,GLvoid, GLuint)
|
32
|
+
GL_FUNC_STATIC_1(Clear,GLvoid, GLbitfield)
|
33
|
+
GL_FUNC_STATIC_4(ClearAccum,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
34
|
+
GL_FUNC_STATIC_4(ClearColor,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
35
|
+
GL_FUNC_STATIC_1(ClearDepth,GLvoid, GLclampd)
|
36
|
+
GL_FUNC_STATIC_1(ClearIndex,GLvoid, GLfloat)
|
37
|
+
GL_FUNC_STATIC_1(ClearStencil,GLvoid, GLint)
|
38
|
+
GL_FUNC_STATIC_3(Color3b,GLvoid, GLbyte,GLbyte,GLbyte)
|
39
|
+
GL_FUNC_STATIC_3(Color3d,GLvoid, GLdouble,GLdouble,GLdouble)
|
40
|
+
GL_FUNC_STATIC_3(Color3f,GLvoid, GLfloat,GLfloat,GLfloat)
|
41
|
+
GL_FUNC_STATIC_3(Color3i,GLvoid, GLint,GLint,GLint)
|
42
|
+
GL_FUNC_STATIC_3(Color3s,GLvoid, GLshort,GLshort,GLshort)
|
43
|
+
GL_FUNC_STATIC_3(Color3ub,GLvoid, GLubyte,GLubyte,GLubyte)
|
44
|
+
GL_FUNC_STATIC_3(Color3ui,GLvoid, GLuint,GLuint,GLuint)
|
45
|
+
GL_FUNC_STATIC_3(Color3us,GLvoid, GLushort,GLushort,GLushort)
|
46
|
+
GL_FUNC_STATIC_4(Color4b,GLvoid, GLbyte,GLbyte,GLbyte,GLbyte)
|
47
|
+
GL_FUNC_STATIC_4(Color4d,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble)
|
48
|
+
GL_FUNC_STATIC_4(Color4f,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
49
|
+
GL_FUNC_STATIC_4(Color4i,GLvoid, GLint,GLint,GLint,GLint)
|
50
|
+
GL_FUNC_STATIC_4(Color4s,GLvoid, GLshort,GLshort,GLshort,GLshort)
|
51
|
+
GL_FUNC_STATIC_4(Color4ub,GLvoid, GLubyte,GLubyte,GLubyte,GLubyte)
|
52
|
+
GL_FUNC_STATIC_4(Color4ui,GLvoid, GLuint,GLuint,GLuint,GLuint)
|
53
|
+
GL_FUNC_STATIC_4(Color4us,GLvoid, GLushort,GLushort,GLushort,GLushort)
|
54
|
+
GL_FUNC_STATIC_4(ColorMask,GLvoid, GLboolean,GLboolean,GLboolean,GLboolean)
|
55
|
+
GL_FUNC_STATIC_2(ColorMaterial,GLvoid, GLenum,GLenum)
|
56
|
+
GL_FUNC_STATIC_5(CopyPixels,GLvoid, GLint,GLint,GLsizei,GLsizei,GLenum)
|
57
|
+
GL_FUNC_STATIC_7(CopyTexImage1D,GLvoid, GLenum,GLint,GLenum,GLint,GLint,GLsizei,GLint)
|
58
|
+
GL_FUNC_STATIC_8(CopyTexImage2D,GLvoid, GLenum,GLint,GLenum,GLint,GLint,GLsizei,GLsizei,GLint)
|
59
|
+
GL_FUNC_STATIC_6(CopyTexSubImage1D,GLvoid, GLenum,GLint,GLint,GLint,GLint,GLsizei)
|
60
|
+
GL_FUNC_STATIC_8(CopyTexSubImage2D,GLvoid, GLenum,GLint,GLint,GLint,GLint,GLint,GLsizei,GLsizei)
|
61
|
+
GL_FUNC_STATIC_1(CullFace,GLvoid, GLenum)
|
62
|
+
GL_FUNC_STATIC_2(DeleteLists,GLvoid, GLuint,GLuint)
|
63
|
+
GL_FUNC_STATIC_1(DepthFunc,GLvoid, GLenum)
|
64
|
+
GL_FUNC_STATIC_1(DepthMask,GLvoid, GLboolean)
|
65
|
+
GL_FUNC_STATIC_2(DepthRange,GLvoid, GLclampd,GLclampd)
|
66
|
+
GL_FUNC_STATIC_1(Disable,GLvoid, GLenum)
|
67
|
+
GL_FUNC_STATIC_1(DisableClientState,GLvoid, GLenum)
|
68
|
+
GL_FUNC_STATIC_3(DrawArrays,GLvoid, GLenum,GLint,GLsizei)
|
69
|
+
GL_FUNC_STATIC_1(DrawBuffer,GLvoid, GLenum)
|
70
|
+
GL_FUNC_STATIC_1(EdgeFlag,GLvoid, GLboolean)
|
71
|
+
GL_FUNC_STATIC_1(Enable,GLvoid, GLenum)
|
72
|
+
GL_FUNC_STATIC_1(EnableClientState,GLvoid, GLenum)
|
73
|
+
GL_FUNC_STATIC_0(EndList,GLvoid)
|
74
|
+
GL_FUNC_STATIC_1(EvalCoord1d,GLvoid, GLdouble)
|
75
|
+
GL_FUNC_STATIC_1(EvalCoord1f,GLvoid, GLfloat)
|
76
|
+
GL_FUNC_STATIC_2(EvalCoord2d,GLvoid, GLdouble,GLdouble)
|
77
|
+
GL_FUNC_STATIC_2(EvalCoord2f,GLvoid, GLfloat,GLfloat)
|
78
|
+
GL_FUNC_STATIC_3(EvalMesh1,GLvoid, GLenum,GLint,GLint)
|
79
|
+
GL_FUNC_STATIC_5(EvalMesh2,GLvoid, GLenum,GLint,GLint,GLint,GLint)
|
80
|
+
GL_FUNC_STATIC_1(EvalPoint1,GLvoid, GLint)
|
81
|
+
GL_FUNC_STATIC_2(EvalPoint2,GLvoid, GLint,GLint)
|
82
|
+
GL_FUNC_STATIC_0(Finish,GLvoid)
|
83
|
+
GL_FUNC_STATIC_0(Flush,GLvoid)
|
84
|
+
GL_FUNC_STATIC_2(Fogi,GLvoid, GLenum,GLint)
|
85
|
+
GL_FUNC_STATIC_2(Fogf,GLvoid, GLenum,GLfloat)
|
86
|
+
GL_FUNC_STATIC_1(FrontFace,GLvoid, GLenum)
|
87
|
+
GL_FUNC_STATIC_6(Frustum,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble)
|
88
|
+
GL_FUNC_STATIC_1(GenLists,GLuint, GLsizei)
|
89
|
+
GL_FUNC_STATIC_0(GetError,GLenum)
|
90
|
+
GL_FUNC_STATIC_2(Hint,GLvoid, GLenum,GLenum)
|
91
|
+
GL_FUNC_STATIC_1(Indexd,GLvoid, GLdouble)
|
92
|
+
GL_FUNC_STATIC_1(Indexf,GLvoid, GLfloat)
|
93
|
+
GL_FUNC_STATIC_1(Indexi,GLvoid, GLint)
|
94
|
+
GL_FUNC_STATIC_1(IndexMask,GLvoid, GLuint)
|
95
|
+
GL_FUNC_STATIC_1(Indexs,GLvoid, GLshort)
|
96
|
+
GL_FUNC_STATIC_1(Indexub,GLvoid, GLubyte)
|
97
|
+
GL_FUNC_STATIC_0(InitNames,GLvoid)
|
98
|
+
GL_FUNC_STATIC_1(IsEnabled,GLboolean, GLenum)
|
99
|
+
GL_FUNC_STATIC_1(IsList,GLboolean, GLuint)
|
100
|
+
GL_FUNC_STATIC_1(IsTexture,GLboolean, GLuint)
|
101
|
+
GL_FUNC_STATIC_2(LightModelf,GLvoid, GLenum,GLfloat)
|
102
|
+
GL_FUNC_STATIC_2(LightModeli,GLvoid, GLenum,GLint)
|
103
|
+
GL_FUNC_STATIC_3(Lightf,GLvoid, GLenum,GLenum,GLfloat)
|
104
|
+
GL_FUNC_STATIC_3(Lighti,GLvoid, GLenum,GLenum,GLint)
|
105
|
+
GL_FUNC_STATIC_2(LineStipple,GLvoid, GLint,GLushort)
|
106
|
+
GL_FUNC_STATIC_1(LineWidth,GLvoid, GLfloat)
|
107
|
+
GL_FUNC_STATIC_1(ListBase,GLvoid, GLuint)
|
108
|
+
GL_FUNC_STATIC_0(LoadIdentity,GLvoid)
|
109
|
+
GL_FUNC_STATIC_1(LoadName,GLvoid, GLuint)
|
110
|
+
GL_FUNC_STATIC_1(LogicOp,GLvoid, GLenum)
|
111
|
+
GL_FUNC_STATIC_3(MapGrid1d,GLvoid, GLint,GLdouble,GLdouble)
|
112
|
+
GL_FUNC_STATIC_3(MapGrid1f,GLvoid, GLint,GLfloat,GLfloat)
|
113
|
+
GL_FUNC_STATIC_6(MapGrid2d,GLvoid, GLint,GLdouble,GLdouble,GLint,GLdouble,GLdouble)
|
114
|
+
GL_FUNC_STATIC_6(MapGrid2f,GLvoid, GLint,GLfloat,GLfloat,GLint,GLfloat,GLfloat)
|
115
|
+
GL_FUNC_STATIC_3(Materialf,GLvoid, GLenum,GLenum,GLfloat)
|
116
|
+
GL_FUNC_STATIC_3(Materiali,GLvoid, GLenum,GLenum,GLint)
|
117
|
+
GL_FUNC_STATIC_1(MatrixMode,GLvoid, GLenum)
|
118
|
+
GL_FUNC_STATIC_2(NewList,GLvoid, GLuint,GLenum)
|
119
|
+
GL_FUNC_STATIC_3(Normal3b,GLvoid, GLbyte,GLbyte,GLbyte)
|
120
|
+
GL_FUNC_STATIC_3(Normal3d,GLvoid, GLdouble,GLdouble,GLdouble)
|
121
|
+
GL_FUNC_STATIC_3(Normal3f,GLvoid, GLfloat,GLfloat,GLfloat)
|
122
|
+
GL_FUNC_STATIC_3(Normal3i,GLvoid, GLint,GLint,GLint)
|
123
|
+
GL_FUNC_STATIC_3(Normal3s,GLvoid, GLshort,GLshort,GLshort)
|
124
|
+
GL_FUNC_STATIC_6(Ortho,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble)
|
125
|
+
GL_FUNC_STATIC_1(PassThrough,GLvoid, GLfloat)
|
126
|
+
GL_FUNC_STATIC_2(PixelStoref,GLvoid, GLenum,GLfloat)
|
127
|
+
GL_FUNC_STATIC_2(PixelStorei,GLvoid, GLenum,GLint)
|
128
|
+
GL_FUNC_STATIC_2(PixelTransferf,GLvoid, GLenum,GLfloat)
|
129
|
+
GL_FUNC_STATIC_2(PixelTransferi,GLvoid, GLenum,GLint)
|
130
|
+
GL_FUNC_STATIC_2(PixelZoom,GLvoid, GLfloat,GLfloat)
|
131
|
+
GL_FUNC_STATIC_1(PointSize,GLvoid, GLfloat)
|
132
|
+
GL_FUNC_STATIC_2(PolygonMode,GLvoid, GLenum,GLenum)
|
133
|
+
GL_FUNC_STATIC_2(PolygonOffset,GLvoid, GLfloat,GLfloat)
|
134
|
+
GL_FUNC_STATIC_0(PopAttrib,GLvoid)
|
135
|
+
GL_FUNC_STATIC_0(PopClientAttrib,GLvoid)
|
136
|
+
GL_FUNC_STATIC_0(PopMatrix,GLvoid)
|
137
|
+
GL_FUNC_STATIC_0(PopName,GLvoid)
|
138
|
+
GL_FUNC_STATIC_1(PushAttrib,GLvoid, GLbitfield)
|
139
|
+
GL_FUNC_STATIC_1(PushClientAttrib,GLvoid, GLbitfield)
|
140
|
+
GL_FUNC_STATIC_0(PushMatrix,GLvoid)
|
141
|
+
GL_FUNC_STATIC_1(PushName,GLvoid, GLuint)
|
142
|
+
GL_FUNC_STATIC_2(RasterPos2d,GLvoid, GLdouble,GLdouble)
|
143
|
+
GL_FUNC_STATIC_2(RasterPos2f,GLvoid, GLfloat,GLfloat)
|
144
|
+
GL_FUNC_STATIC_2(RasterPos2i,GLvoid, GLint,GLint)
|
145
|
+
GL_FUNC_STATIC_2(RasterPos2s,GLvoid, GLshort,GLshort)
|
146
|
+
GL_FUNC_STATIC_3(RasterPos3d,GLvoid, GLdouble,GLdouble,GLdouble)
|
147
|
+
GL_FUNC_STATIC_3(RasterPos3f,GLvoid, GLfloat,GLfloat,GLfloat)
|
148
|
+
GL_FUNC_STATIC_3(RasterPos3i,GLvoid, GLint,GLint,GLint)
|
149
|
+
GL_FUNC_STATIC_3(RasterPos3s,GLvoid, GLshort,GLshort,GLshort)
|
150
|
+
GL_FUNC_STATIC_4(RasterPos4d,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble)
|
151
|
+
GL_FUNC_STATIC_4(RasterPos4f,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
152
|
+
GL_FUNC_STATIC_4(RasterPos4i,GLvoid, GLint,GLint,GLint,GLint)
|
153
|
+
GL_FUNC_STATIC_4(RasterPos4s,GLvoid, GLshort,GLshort,GLshort,GLshort)
|
154
|
+
GL_FUNC_STATIC_1(ReadBuffer,GLvoid, GLenum)
|
155
|
+
GL_FUNC_STATIC_4(Rectd,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble)
|
156
|
+
GL_FUNC_STATIC_4(Rectf,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
157
|
+
GL_FUNC_STATIC_4(Recti,GLvoid, GLint,GLint,GLint,GLint)
|
158
|
+
GL_FUNC_STATIC_4(Rects,GLvoid, GLshort,GLshort,GLshort,GLshort)
|
159
|
+
GL_FUNC_STATIC_1(RenderMode,GLint, GLenum)
|
160
|
+
GL_FUNC_STATIC_4(Rotated,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble)
|
161
|
+
GL_FUNC_STATIC_4(Rotatef,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
162
|
+
GL_FUNC_STATIC_3(Scaled,GLvoid, GLdouble,GLdouble,GLdouble)
|
163
|
+
GL_FUNC_STATIC_3(Scalef,GLvoid, GLdouble,GLdouble,GLdouble)
|
164
|
+
GL_FUNC_STATIC_4(Scissor,GLvoid, GLint,GLint,GLint,GLint)
|
165
|
+
GL_FUNC_STATIC_1(ShadeModel,GLvoid, GLenum)
|
166
|
+
GL_FUNC_STATIC_3(StencilFunc,GLvoid, GLenum,GLint,GLuint)
|
167
|
+
GL_FUNC_STATIC_1(StencilMask,GLvoid, GLuint)
|
168
|
+
GL_FUNC_STATIC_3(StencilOp,GLvoid, GLenum,GLenum,GLenum)
|
169
|
+
GL_FUNC_STATIC_1(TexCoord1d,GLvoid, GLdouble)
|
170
|
+
GL_FUNC_STATIC_1(TexCoord1f,GLvoid, GLfloat)
|
171
|
+
GL_FUNC_STATIC_1(TexCoord1i,GLvoid, GLint)
|
172
|
+
GL_FUNC_STATIC_1(TexCoord1s,GLvoid, GLshort)
|
173
|
+
GL_FUNC_STATIC_2(TexCoord2d,GLvoid, GLdouble,GLdouble)
|
174
|
+
GL_FUNC_STATIC_2(TexCoord2f,GLvoid, GLfloat,GLfloat)
|
175
|
+
GL_FUNC_STATIC_2(TexCoord2i,GLvoid, GLint,GLint)
|
176
|
+
GL_FUNC_STATIC_2(TexCoord2s,GLvoid, GLshort,GLshort)
|
177
|
+
GL_FUNC_STATIC_3(TexCoord3d,GLvoid, GLdouble,GLdouble,GLdouble)
|
178
|
+
GL_FUNC_STATIC_3(TexCoord3f,GLvoid, GLfloat,GLfloat,GLfloat)
|
179
|
+
GL_FUNC_STATIC_3(TexCoord3i,GLvoid, GLint,GLint,GLint)
|
180
|
+
GL_FUNC_STATIC_3(TexCoord3s,GLvoid, GLshort,GLshort,GLshort)
|
181
|
+
GL_FUNC_STATIC_4(TexCoord4d,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble)
|
182
|
+
GL_FUNC_STATIC_4(TexCoord4f,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
183
|
+
GL_FUNC_STATIC_4(TexCoord4i,GLvoid, GLint,GLint,GLint,GLint)
|
184
|
+
GL_FUNC_STATIC_4(TexCoord4s,GLvoid, GLshort,GLshort,GLshort,GLshort)
|
185
|
+
GL_FUNC_STATIC_3(TexEnvf,GLvoid, GLenum,GLenum,GLfloat)
|
186
|
+
GL_FUNC_STATIC_3(TexEnvi,GLvoid, GLenum,GLenum,GLint)
|
187
|
+
GL_FUNC_STATIC_3(TexGend,GLvoid, GLenum,GLenum,GLdouble)
|
188
|
+
GL_FUNC_STATIC_3(TexGenf,GLvoid, GLenum,GLenum,GLfloat)
|
189
|
+
GL_FUNC_STATIC_3(TexGeni,GLvoid, GLenum,GLenum,GLint)
|
190
|
+
GL_FUNC_STATIC_3(TexParameterf,GLvoid, GLenum,GLenum,GLfloat)
|
191
|
+
GL_FUNC_STATIC_3(TexParameteri,GLvoid, GLenum,GLenum,GLint)
|
192
|
+
GL_FUNC_STATIC_3(Translated,GLvoid, GLdouble,GLdouble,GLdouble)
|
193
|
+
GL_FUNC_STATIC_3(Translatef,GLvoid, GLdouble,GLdouble,GLdouble)
|
194
|
+
GL_FUNC_STATIC_2(Vertex2d,GLvoid, GLdouble,GLdouble)
|
195
|
+
GL_FUNC_STATIC_2(Vertex2f,GLvoid, GLfloat,GLfloat)
|
196
|
+
GL_FUNC_STATIC_2(Vertex2i,GLvoid, GLint,GLint)
|
197
|
+
GL_FUNC_STATIC_2(Vertex2s,GLvoid, GLshort,GLshort)
|
198
|
+
GL_FUNC_STATIC_3(Vertex3d,GLvoid, GLdouble,GLdouble,GLdouble)
|
199
|
+
GL_FUNC_STATIC_3(Vertex3f,GLvoid, GLfloat,GLfloat,GLfloat)
|
200
|
+
GL_FUNC_STATIC_3(Vertex3i,GLvoid, GLint,GLint,GLint)
|
201
|
+
GL_FUNC_STATIC_3(Vertex3s,GLvoid, GLshort,GLshort,GLshort)
|
202
|
+
GL_FUNC_STATIC_4(Vertex4d,GLvoid, GLdouble,GLdouble,GLdouble,GLdouble)
|
203
|
+
GL_FUNC_STATIC_4(Vertex4f,GLvoid, GLfloat,GLfloat,GLfloat,GLfloat)
|
204
|
+
GL_FUNC_STATIC_4(Vertex4i,GLvoid, GLint,GLint,GLint,GLint)
|
205
|
+
GL_FUNC_STATIC_4(Vertex4s,GLvoid, GLshort,GLshort,GLshort,GLshort)
|
206
|
+
GL_FUNC_STATIC_4(Viewport,GLvoid, GLuint,GLuint,GLuint,GLuint)
|
207
|
+
|
208
|
+
VALUE inside_begin_end = Qfalse;
|
209
|
+
|
210
|
+
static VALUE
|
211
|
+
gl_Begin(obj,arg1)
|
212
|
+
VALUE obj,arg1;
|
170
213
|
{
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
mode = (GLenum)NUM2INT(arg2);
|
175
|
-
glNewList(list,mode);
|
176
|
-
return Qnil;
|
214
|
+
glBegin(CONV_GLenum(arg1));
|
215
|
+
inside_begin_end = Qtrue;
|
216
|
+
return Qnil;
|
177
217
|
}
|
178
218
|
|
179
219
|
static VALUE
|
180
|
-
|
181
|
-
VALUE obj
|
220
|
+
gl_End(obj)
|
221
|
+
VALUE obj;
|
182
222
|
{
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
type = GL_BYTE;
|
188
|
-
lists = RSTRING(arg1)->ptr;
|
189
|
-
n = RSTRING(arg1)->len;
|
190
|
-
} else if (TYPE(arg1) == T_ARRAY) {
|
191
|
-
type = GL_INT;
|
192
|
-
lists = ALLOC_N(GLint, RARRAY(arg1)->len);
|
193
|
-
n = ary2cint(arg1,lists,0);
|
194
|
-
} else {
|
195
|
-
Check_Type(arg1,T_ARRAY); /* force exception */
|
196
|
-
return Qnil; /* not reached */
|
197
|
-
}
|
198
|
-
glCallLists(n, type, lists);
|
199
|
-
if (type == GL_INT) xfree(lists);
|
200
|
-
return Qnil;
|
223
|
+
inside_begin_end = Qfalse;
|
224
|
+
glEnd();
|
225
|
+
CHECK_GLERROR
|
226
|
+
return Qnil;
|
201
227
|
}
|
202
228
|
|
203
229
|
static VALUE
|
204
|
-
|
205
|
-
VALUE obj,arg1;
|
230
|
+
gl_CallLists(obj,arg1,arg2)
|
231
|
+
VALUE obj,arg1,arg2;
|
206
232
|
{
|
207
|
-
GLsizei
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
233
|
+
GLsizei n;
|
234
|
+
GLenum type;
|
235
|
+
VALUE lists;
|
236
|
+
type = CONV_GLenum(arg1);
|
237
|
+
lists = pack_array_or_pass_string(type,arg2);
|
238
|
+
n = RSTRING_LEN(lists) / gltype_glformat_unit_size(type,1);
|
239
|
+
glCallLists(n, type, RSTRING_PTR(lists));
|
240
|
+
CHECK_GLERROR
|
241
|
+
return Qnil;
|
212
242
|
}
|
213
243
|
|
214
244
|
static VALUE
|
@@ -230,15 +260,15 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
|
|
230
260
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
231
261
|
glBitmap(width, height, xorig, yorig, xmove, ymove, (GLvoid *)NUM2INT(arg7));
|
232
262
|
} else {
|
233
|
-
|
234
|
-
|
263
|
+
VALUE data;
|
264
|
+
data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg7);
|
235
265
|
|
236
|
-
if (
|
237
|
-
rb_raise(rb_eArgError, "string length:%
|
266
|
+
if ((RSTRING_LEN(data)*8) < (width * height))
|
267
|
+
rb_raise(rb_eArgError, "string length:%li", RSTRING_LEN(data));
|
238
268
|
|
239
|
-
|
240
|
-
glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap);
|
269
|
+
glBitmap(width, height, xorig, yorig, xmove, ymove, (const GLubyte *)RSTRING_PTR(data));
|
241
270
|
}
|
271
|
+
CHECK_GLERROR
|
242
272
|
return Qnil;
|
243
273
|
}
|
244
274
|
|
@@ -250,6 +280,7 @@ VALUE obj,arg1;
|
|
250
280
|
Check_Type(arg1,T_ARRAY);
|
251
281
|
ary2cboolean(arg1,flag,1);
|
252
282
|
glEdgeFlagv(flag);
|
283
|
+
CHECK_GLERROR
|
253
284
|
return Qnil;
|
254
285
|
}
|
255
286
|
|
@@ -261,6 +292,7 @@ VALUE obj,arg1;
|
|
261
292
|
Check_Type(arg1,T_ARRAY);
|
262
293
|
ary2cdbl(arg1,c,1);
|
263
294
|
glIndexdv(c);
|
295
|
+
CHECK_GLERROR
|
264
296
|
return Qnil;
|
265
297
|
}
|
266
298
|
|
@@ -272,6 +304,7 @@ VALUE obj,arg1;
|
|
272
304
|
Check_Type(arg1,T_ARRAY);
|
273
305
|
ary2cflt(arg1,c,1);
|
274
306
|
glIndexfv(c);
|
307
|
+
CHECK_GLERROR
|
275
308
|
return Qnil;
|
276
309
|
}
|
277
310
|
|
@@ -283,6 +316,7 @@ VALUE obj,arg1;
|
|
283
316
|
Check_Type(arg1,T_ARRAY);
|
284
317
|
ary2cint(arg1,c,1);
|
285
318
|
glIndexiv(c);
|
319
|
+
CHECK_GLERROR
|
286
320
|
return Qnil;
|
287
321
|
}
|
288
322
|
|
@@ -294,6 +328,7 @@ VALUE obj,arg1;
|
|
294
328
|
Check_Type(arg1,T_ARRAY);
|
295
329
|
ary2cshort(arg1,c,1);
|
296
330
|
glIndexsv(c);
|
331
|
+
CHECK_GLERROR
|
297
332
|
return Qnil;
|
298
333
|
}
|
299
334
|
|
@@ -307,18 +342,7 @@ VALUE obj,arg1,arg2;
|
|
307
342
|
Check_Type(arg2,T_ARRAY);
|
308
343
|
ary2cdbl(arg2, equation, 4);
|
309
344
|
glClipPlane(plane,equation);
|
310
|
-
|
311
|
-
}
|
312
|
-
|
313
|
-
static VALUE
|
314
|
-
gl_Fogf(obj,arg1,arg2)
|
315
|
-
VALUE obj,arg1,arg2;
|
316
|
-
{
|
317
|
-
GLenum pname;
|
318
|
-
GLfloat param;
|
319
|
-
pname = (GLenum)NUM2INT(arg1);
|
320
|
-
param = (GLfloat)NUM2DBL(arg2);
|
321
|
-
glFogf(pname,param);
|
345
|
+
CHECK_GLERROR
|
322
346
|
return Qnil;
|
323
347
|
}
|
324
348
|
|
@@ -332,18 +356,7 @@ VALUE obj,arg1,arg2;
|
|
332
356
|
Check_Type(arg2,T_ARRAY);
|
333
357
|
ary2cflt(arg2,params,4);
|
334
358
|
glFogfv(pname,params);
|
335
|
-
|
336
|
-
}
|
337
|
-
|
338
|
-
static VALUE
|
339
|
-
gl_Fogi(obj,arg1,arg2)
|
340
|
-
VALUE obj,arg1,arg2;
|
341
|
-
{
|
342
|
-
GLenum pname;
|
343
|
-
GLint param;
|
344
|
-
pname = (GLenum)NUM2INT(arg1);
|
345
|
-
param = (GLint)NUM2INT(arg2);
|
346
|
-
glFogi(pname,param);
|
359
|
+
CHECK_GLERROR
|
347
360
|
return Qnil;
|
348
361
|
}
|
349
362
|
|
@@ -357,20 +370,7 @@ VALUE obj,arg1,arg2;
|
|
357
370
|
Check_Type(arg2,T_ARRAY);
|
358
371
|
ary2cint(arg2,params,4);
|
359
372
|
glFogiv(pname,params);
|
360
|
-
|
361
|
-
}
|
362
|
-
|
363
|
-
static VALUE
|
364
|
-
gl_Lightf(obj,arg1,arg2,arg3)
|
365
|
-
VALUE obj,arg1,arg2,arg3;
|
366
|
-
{
|
367
|
-
GLenum light;
|
368
|
-
GLenum pname;
|
369
|
-
GLfloat param;
|
370
|
-
light = (GLenum)NUM2INT(arg1);
|
371
|
-
pname = (GLenum)NUM2INT(arg2);
|
372
|
-
param = (GLfloat)NUM2DBL(arg3);
|
373
|
-
glLightf(light,pname,param);
|
373
|
+
CHECK_GLERROR
|
374
374
|
return Qnil;
|
375
375
|
}
|
376
376
|
|
@@ -386,20 +386,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
386
386
|
Check_Type(arg3,T_ARRAY);
|
387
387
|
ary2cflt(arg3,params,4);
|
388
388
|
glLightfv(light,pname,params);
|
389
|
-
|
390
|
-
}
|
391
|
-
|
392
|
-
static VALUE
|
393
|
-
gl_Lighti(obj,arg1,arg2,arg3)
|
394
|
-
VALUE obj,arg1,arg2,arg3;
|
395
|
-
{
|
396
|
-
GLenum light;
|
397
|
-
GLenum pname;
|
398
|
-
GLint param;
|
399
|
-
light = (GLenum)NUM2INT(arg1);
|
400
|
-
pname = (GLenum)NUM2INT(arg2);
|
401
|
-
param = (GLint)NUM2INT(arg3);
|
402
|
-
glLighti(light,pname,param);
|
389
|
+
CHECK_GLERROR
|
403
390
|
return Qnil;
|
404
391
|
}
|
405
392
|
|
@@ -415,18 +402,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
415
402
|
Check_Type(arg3,T_ARRAY);
|
416
403
|
ary2cint(arg3,params,4);
|
417
404
|
glLightiv(light,pname,params);
|
418
|
-
|
419
|
-
}
|
420
|
-
|
421
|
-
static VALUE
|
422
|
-
gl_LightModelf(obj,arg1,arg2)
|
423
|
-
VALUE obj,arg1,arg2;
|
424
|
-
{
|
425
|
-
GLenum pname;
|
426
|
-
GLfloat param;
|
427
|
-
pname = (GLenum)NUM2INT(arg1);
|
428
|
-
param = (GLfloat)NUM2DBL(arg2);
|
429
|
-
glLightModelf(pname,param);
|
405
|
+
CHECK_GLERROR
|
430
406
|
return Qnil;
|
431
407
|
}
|
432
408
|
|
@@ -440,18 +416,7 @@ VALUE obj,arg1,arg2;
|
|
440
416
|
Check_Type(arg2,T_ARRAY);
|
441
417
|
ary2cflt(arg2,params,4);
|
442
418
|
glLightModelfv(pname,params);
|
443
|
-
|
444
|
-
}
|
445
|
-
|
446
|
-
static VALUE
|
447
|
-
gl_LightModeli(obj,arg1,arg2)
|
448
|
-
VALUE obj,arg1,arg2;
|
449
|
-
{
|
450
|
-
GLenum pname;
|
451
|
-
GLint param;
|
452
|
-
pname = (GLenum)NUM2INT(arg1);
|
453
|
-
param = (GLint)NUM2INT(arg2);
|
454
|
-
glLightModeli(pname,param);
|
419
|
+
CHECK_GLERROR
|
455
420
|
return Qnil;
|
456
421
|
}
|
457
422
|
|
@@ -465,34 +430,10 @@ VALUE obj,arg1,arg2;
|
|
465
430
|
Check_Type(arg2,T_ARRAY);
|
466
431
|
ary2cint(arg2,params,4);
|
467
432
|
glLightModeliv(pname,params);
|
433
|
+
CHECK_GLERROR
|
468
434
|
return Qnil;
|
469
435
|
}
|
470
436
|
|
471
|
-
static VALUE
|
472
|
-
gl_LineStipple(obj,arg1,arg2)
|
473
|
-
VALUE obj,arg1,arg2;
|
474
|
-
{
|
475
|
-
GLint factor;
|
476
|
-
GLushort pattern;
|
477
|
-
factor = (GLint)NUM2INT(arg1);
|
478
|
-
pattern = (GLushort)(NUM2INT(arg2) & 0xFFFF);
|
479
|
-
glLineStipple(factor,pattern);
|
480
|
-
return Qnil;
|
481
|
-
}
|
482
|
-
|
483
|
-
static VALUE
|
484
|
-
gl_Materialf(obj,arg1,arg2,arg3)
|
485
|
-
VALUE obj,arg1,arg2,arg3;
|
486
|
-
{
|
487
|
-
GLenum face;
|
488
|
-
GLenum pname;
|
489
|
-
GLfloat param;
|
490
|
-
face = (GLenum)NUM2INT(arg1);
|
491
|
-
pname = (GLenum)NUM2INT(arg2);
|
492
|
-
param = (GLfloat)NUM2DBL(arg3);
|
493
|
-
glMaterialf(face,pname,param);
|
494
|
-
return Qnil;
|
495
|
-
}
|
496
437
|
|
497
438
|
static VALUE
|
498
439
|
gl_Materialfv(obj,arg1,arg2,arg3)
|
@@ -506,20 +447,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
506
447
|
Check_Type(arg3,T_ARRAY);
|
507
448
|
ary2cflt(arg3,params,4);
|
508
449
|
glMaterialfv(face,pname,params);
|
509
|
-
|
510
|
-
}
|
511
|
-
|
512
|
-
static VALUE
|
513
|
-
gl_Materiali(obj,arg1,arg2,arg3)
|
514
|
-
VALUE obj,arg1,arg2,arg3;
|
515
|
-
{
|
516
|
-
GLenum face;
|
517
|
-
GLenum pname;
|
518
|
-
GLint param;
|
519
|
-
face = (GLenum)NUM2INT(arg1);
|
520
|
-
pname = (GLenum)NUM2INT(arg2);
|
521
|
-
param = (GLint)NUM2INT(arg3);
|
522
|
-
glMateriali(face,pname,param);
|
450
|
+
CHECK_GLERROR
|
523
451
|
return Qnil;
|
524
452
|
}
|
525
453
|
|
@@ -535,6 +463,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
535
463
|
Check_Type(arg3,T_ARRAY);
|
536
464
|
ary2cint(arg3,params,4);
|
537
465
|
glMaterialiv(face,pname,params);
|
466
|
+
CHECK_GLERROR
|
538
467
|
return Qnil;
|
539
468
|
}
|
540
469
|
|
@@ -542,40 +471,20 @@ static VALUE
|
|
542
471
|
gl_PolygonStipple(obj,arg1)
|
543
472
|
VALUE obj,arg1;
|
544
473
|
{
|
545
|
-
GLubyte mask[128];
|
546
|
-
|
547
474
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
548
475
|
glPolygonStipple((GLvoid *)NUM2INT(arg1));
|
549
476
|
} else {
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
rb_raise(rb_eArgError, "string length:%d", RSTRING(arg1)->len);
|
557
|
-
memcpy(mask, RSTRING(arg1)->ptr, 128);
|
558
|
-
}
|
559
|
-
else
|
560
|
-
Check_Type(arg1,T_STRING); /* force exception */
|
561
|
-
glPolygonStipple(mask);
|
477
|
+
VALUE data;
|
478
|
+
data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg1);
|
479
|
+
if (RSTRING_LEN(data) < 128)
|
480
|
+
rb_raise(rb_eArgError, "string length:%li", RSTRING_LEN(data));
|
481
|
+
|
482
|
+
glPolygonStipple((GLubyte *)RSTRING_PTR(data));
|
562
483
|
}
|
484
|
+
CHECK_GLERROR
|
563
485
|
return Qnil;
|
564
486
|
}
|
565
487
|
|
566
|
-
static VALUE
|
567
|
-
gl_TexParameterf(obj,arg1,arg2,arg3)
|
568
|
-
VALUE obj,arg1,arg2,arg3;
|
569
|
-
{
|
570
|
-
GLenum target;
|
571
|
-
GLenum pname;
|
572
|
-
GLfloat param;
|
573
|
-
target = (GLenum)NUM2INT(arg1);
|
574
|
-
pname = (GLenum)NUM2INT(arg2);
|
575
|
-
param = (GLfloat)NUM2DBL(arg3);
|
576
|
-
glTexParameterf(target,pname,param);
|
577
|
-
return Qnil;
|
578
|
-
}
|
579
488
|
|
580
489
|
static VALUE
|
581
490
|
gl_TexParameterfv(obj,arg1,arg2,arg3)
|
@@ -589,20 +498,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
589
498
|
Check_Type(arg3,T_ARRAY);
|
590
499
|
ary2cflt(arg3,params,4);
|
591
500
|
glTexParameterfv(target,pname,params);
|
592
|
-
|
593
|
-
}
|
594
|
-
|
595
|
-
static VALUE
|
596
|
-
gl_TexParameteri(obj,arg1,arg2,arg3)
|
597
|
-
VALUE obj,arg1,arg2,arg3;
|
598
|
-
{
|
599
|
-
GLenum target;
|
600
|
-
GLenum pname;
|
601
|
-
GLint param;
|
602
|
-
target = (GLenum)NUM2INT(arg1);
|
603
|
-
pname = (GLenum)NUM2INT(arg2);
|
604
|
-
param = (GLint)NUM2INT(arg3);
|
605
|
-
glTexParameteri(target,pname,param);
|
501
|
+
CHECK_GLERROR
|
606
502
|
return Qnil;
|
607
503
|
}
|
608
504
|
|
@@ -618,6 +514,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
618
514
|
Check_Type(arg3,T_ARRAY);
|
619
515
|
ary2cint(arg3,params,4);
|
620
516
|
glTexParameteriv(target,pname,params);
|
517
|
+
CHECK_GLERROR
|
621
518
|
return Qnil;
|
622
519
|
}
|
623
520
|
|
@@ -643,17 +540,20 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
|
|
643
540
|
|
644
541
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
645
542
|
glTexImage1D(target,level,components,width,border,format,type,(GLvoid *)NUM2INT(arg8));
|
543
|
+
CHECK_GLERROR
|
646
544
|
return Qnil;
|
647
545
|
}
|
648
546
|
|
649
547
|
if (target == GL_PROXY_TEXTURE_1D || NIL_P(arg8)) { /* proxy texture, no data read */
|
650
548
|
pixels = NULL;
|
651
549
|
} else {
|
652
|
-
|
653
|
-
|
654
|
-
|
550
|
+
VALUE data;
|
551
|
+
data = pack_array_or_pass_string(type,arg8);
|
552
|
+
CheckDataSize(type,format,width,data);
|
553
|
+
pixels = RSTRING_PTR(data);
|
655
554
|
}
|
656
555
|
glTexImage1D(target,level,components,width,border,format,type,pixels);
|
556
|
+
CHECK_GLERROR
|
657
557
|
return Qnil;
|
658
558
|
}
|
659
559
|
|
@@ -681,31 +581,20 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
|
|
681
581
|
|
682
582
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
683
583
|
glTexImage2D(target,level,components,width,height,border,format,type,(GLvoid *)NUM2INT(arg9));
|
584
|
+
CHECK_GLERROR
|
684
585
|
return Qnil;
|
685
586
|
}
|
686
587
|
|
687
588
|
if (target == GL_PROXY_TEXTURE_2D || target == GL_PROXY_TEXTURE_1D_ARRAY_EXT || target == GL_PROXY_TEXTURE_CUBE_MAP || NIL_P(arg9)) { /* proxy texture, no data read */
|
688
589
|
pixels = NULL;
|
689
590
|
} else {
|
690
|
-
|
691
|
-
|
692
|
-
|
591
|
+
VALUE data;
|
592
|
+
data = pack_array_or_pass_string(type,arg9);
|
593
|
+
CheckDataSize(type,format,width*height,data);
|
594
|
+
pixels = RSTRING_PTR(data);
|
693
595
|
}
|
694
596
|
glTexImage2D(target,level,components,width,height,border,format,type,pixels);
|
695
|
-
|
696
|
-
}
|
697
|
-
|
698
|
-
static VALUE
|
699
|
-
gl_TexEnvf(obj,arg1,arg2,arg3)
|
700
|
-
VALUE obj,arg1,arg2,arg3;
|
701
|
-
{
|
702
|
-
GLenum target;
|
703
|
-
GLenum pname;
|
704
|
-
GLfloat param;
|
705
|
-
target = (GLenum)NUM2INT(arg1);
|
706
|
-
pname = (GLenum)NUM2INT(arg2);
|
707
|
-
param = (GLfloat)NUM2DBL(arg3);
|
708
|
-
glTexEnvf(target,pname,param);
|
597
|
+
CHECK_GLERROR
|
709
598
|
return Qnil;
|
710
599
|
}
|
711
600
|
|
@@ -721,20 +610,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
721
610
|
Check_Type(arg3,T_ARRAY);
|
722
611
|
ary2cflt(arg3,params,4);
|
723
612
|
glTexEnvfv(target,pname,params);
|
724
|
-
|
725
|
-
}
|
726
|
-
|
727
|
-
static VALUE
|
728
|
-
gl_TexEnvi(obj,arg1,arg2,arg3)
|
729
|
-
VALUE obj,arg1,arg2,arg3;
|
730
|
-
{
|
731
|
-
GLenum target;
|
732
|
-
GLenum pname;
|
733
|
-
GLint param;
|
734
|
-
target = (GLenum)NUM2INT(arg1);
|
735
|
-
pname = (GLenum)NUM2INT(arg2);
|
736
|
-
param = (GLint)NUM2INT(arg3);
|
737
|
-
glTexEnvi(target,pname,param);
|
613
|
+
CHECK_GLERROR
|
738
614
|
return Qnil;
|
739
615
|
}
|
740
616
|
|
@@ -750,22 +626,10 @@ VALUE obj,arg1,arg2,arg3;
|
|
750
626
|
Check_Type(arg3,T_ARRAY);
|
751
627
|
ary2cint(arg3,params,4);
|
752
628
|
glTexEnviv(target,pname,params);
|
629
|
+
CHECK_GLERROR
|
753
630
|
return Qnil;
|
754
631
|
}
|
755
632
|
|
756
|
-
static VALUE
|
757
|
-
gl_TexGend(obj,arg1,arg2,arg3)
|
758
|
-
VALUE obj,arg1,arg2,arg3;
|
759
|
-
{
|
760
|
-
GLenum coord;
|
761
|
-
GLenum pname;
|
762
|
-
GLdouble param;
|
763
|
-
coord = (GLenum)NUM2INT(arg1);
|
764
|
-
pname = (GLenum)NUM2INT(arg2);
|
765
|
-
param = (GLdouble)NUM2DBL(arg3);
|
766
|
-
glTexGend(coord,pname,param);
|
767
|
-
return Qnil;
|
768
|
-
}
|
769
633
|
|
770
634
|
static VALUE
|
771
635
|
gl_TexGendv(obj,arg1,arg2,arg3)
|
@@ -779,24 +643,11 @@ VALUE obj,arg1,arg2,arg3;
|
|
779
643
|
Check_Type(arg3,T_ARRAY);
|
780
644
|
ary2cdbl(arg3,params,4);
|
781
645
|
glTexGendv(coord,pname,params);
|
646
|
+
CHECK_GLERROR
|
782
647
|
return Qnil;
|
783
648
|
}
|
784
649
|
|
785
650
|
|
786
|
-
static VALUE
|
787
|
-
gl_TexGenf(obj,arg1,arg2,arg3)
|
788
|
-
VALUE obj,arg1,arg2,arg3;
|
789
|
-
{
|
790
|
-
GLenum coord;
|
791
|
-
GLenum pname;
|
792
|
-
GLfloat param;
|
793
|
-
coord = (GLenum)NUM2INT(arg1);
|
794
|
-
pname = (GLenum)NUM2INT(arg2);
|
795
|
-
param = (GLfloat)NUM2DBL(arg3);
|
796
|
-
glTexGenf(coord,pname,param);
|
797
|
-
return Qnil;
|
798
|
-
}
|
799
|
-
|
800
651
|
static VALUE
|
801
652
|
gl_TexGenfv(obj,arg1,arg2,arg3)
|
802
653
|
VALUE obj,arg1,arg2,arg3;
|
@@ -809,22 +660,10 @@ VALUE obj,arg1,arg2,arg3;
|
|
809
660
|
Check_Type(arg3,T_ARRAY);
|
810
661
|
ary2cflt(arg3,params,4);
|
811
662
|
glTexGenfv(coord,pname,params);
|
663
|
+
CHECK_GLERROR
|
812
664
|
return Qnil;
|
813
665
|
}
|
814
666
|
|
815
|
-
static VALUE
|
816
|
-
gl_TexGeni(obj,arg1,arg2,arg3)
|
817
|
-
VALUE obj,arg1,arg2,arg3;
|
818
|
-
{
|
819
|
-
GLenum coord;
|
820
|
-
GLenum pname;
|
821
|
-
GLint param;
|
822
|
-
coord = (GLenum)NUM2INT(arg1);
|
823
|
-
pname = (GLenum)NUM2INT(arg2);
|
824
|
-
param = (GLint)NUM2INT(arg3);
|
825
|
-
glTexGeni(coord,pname,param);
|
826
|
-
return Qnil;
|
827
|
-
}
|
828
667
|
|
829
668
|
static VALUE
|
830
669
|
gl_TexGeniv(obj,arg1,arg2,arg3)
|
@@ -838,6 +677,7 @@ VALUE obj,arg1,arg2,arg3;
|
|
838
677
|
Check_Type(arg3,T_ARRAY);
|
839
678
|
ary2cint(arg3,params,4);
|
840
679
|
glTexGeniv(coord,pname,params);
|
680
|
+
CHECK_GLERROR
|
841
681
|
return Qnil;
|
842
682
|
}
|
843
683
|
static VALUE g_current_feed_buffer;
|
@@ -851,7 +691,8 @@ VALUE obj,arg1,arg2;
|
|
851
691
|
type = (GLenum)NUM2INT(arg2);
|
852
692
|
g_current_feed_buffer = allocate_buffer_with_string(sizeof(GLfloat)*size);
|
853
693
|
rb_str_freeze(g_current_feed_buffer);
|
854
|
-
glFeedbackBuffer(size, type, (GLfloat*)
|
694
|
+
glFeedbackBuffer(size, type, (GLfloat*)RSTRING_PTR(g_current_feed_buffer));
|
695
|
+
CHECK_GLERROR
|
855
696
|
return g_current_feed_buffer;
|
856
697
|
}
|
857
698
|
|
@@ -864,32 +705,11 @@ VALUE obj,arg1;
|
|
864
705
|
size = (GLsizei)NUM2UINT(arg1);
|
865
706
|
g_current_sel_buffer = allocate_buffer_with_string(sizeof(GLuint)*size);
|
866
707
|
rb_str_freeze(g_current_sel_buffer);
|
867
|
-
glSelectBuffer(size, (GLuint*)
|
708
|
+
glSelectBuffer(size, (GLuint*)RSTRING_PTR(g_current_sel_buffer));
|
709
|
+
CHECK_GLERROR
|
868
710
|
return g_current_sel_buffer;
|
869
711
|
}
|
870
712
|
|
871
|
-
static VALUE
|
872
|
-
gl_RenderMode(obj,arg1)
|
873
|
-
VALUE obj,arg1;
|
874
|
-
{
|
875
|
-
GLenum mode;
|
876
|
-
GLint ret;
|
877
|
-
mode = (GLenum)NUM2INT(arg1);
|
878
|
-
ret = glRenderMode(mode);
|
879
|
-
return INT2NUM(ret);
|
880
|
-
}
|
881
|
-
|
882
|
-
static VALUE
|
883
|
-
gl_Accum(obj,arg1,arg2)
|
884
|
-
VALUE obj,arg1,arg2;
|
885
|
-
{
|
886
|
-
GLenum op;
|
887
|
-
GLfloat value;
|
888
|
-
op = (GLenum)NUM2INT(arg1);
|
889
|
-
value = (GLfloat)NUM2DBL(arg2);
|
890
|
-
glAccum(op,value);
|
891
|
-
return Qnil;
|
892
|
-
}
|
893
713
|
|
894
714
|
static VALUE
|
895
715
|
gl_Map1d(obj,arg1,arg2,arg3,arg4,arg5,arg6)
|
@@ -910,11 +730,11 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
|
910
730
|
stride = (GLint)NUM2INT(arg4);
|
911
731
|
order = (GLint)NUM2INT(arg5);
|
912
732
|
points = ALLOC_N(GLdouble, order*stride);
|
913
|
-
work_ary =
|
914
|
-
mary2ary(arg6, work_ary);
|
733
|
+
work_ary = rb_funcall(arg6,rb_intern("flatten"),0);
|
915
734
|
ary2cdbl(work_ary, points, order*stride);
|
916
735
|
glMap1d(target, u1, u2, stride, order, points);
|
917
736
|
xfree(points);
|
737
|
+
CHECK_GLERROR
|
918
738
|
return Qnil;
|
919
739
|
}
|
920
740
|
|
@@ -937,11 +757,11 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
|
937
757
|
stride = (GLint)NUM2INT(arg4);
|
938
758
|
order = (GLint)NUM2INT(arg5);
|
939
759
|
points = ALLOC_N(GLfloat, order*stride);
|
940
|
-
work_ary =
|
941
|
-
mary2ary(arg6, work_ary);
|
760
|
+
work_ary = rb_funcall(arg6,rb_intern("flatten"),0);
|
942
761
|
ary2cflt(work_ary, points, order*stride);
|
943
762
|
glMap1f(target, u1, u2, stride, order, points);
|
944
763
|
xfree(points);
|
764
|
+
CHECK_GLERROR
|
945
765
|
return Qnil;
|
946
766
|
}
|
947
767
|
|
@@ -972,11 +792,11 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10;
|
|
972
792
|
vstride = (GLint)NUM2INT(arg8);
|
973
793
|
vorder = (GLint)NUM2INT(arg9);
|
974
794
|
points = ALLOC_N(GLdouble, MAX(ustride*uorder, vstride*vorder));
|
975
|
-
work_ary =
|
976
|
-
|
977
|
-
ary2cdbl(arg10, points, MAX(ustride*uorder, vstride*vorder));
|
795
|
+
work_ary = rb_funcall(arg10,rb_intern("flatten"),0);
|
796
|
+
ary2cdbl(work_ary, points, MAX(ustride*uorder, vstride*vorder));
|
978
797
|
glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
|
979
798
|
xfree(points);
|
799
|
+
CHECK_GLERROR
|
980
800
|
return Qnil;
|
981
801
|
}
|
982
802
|
|
@@ -1007,79 +827,11 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10;
|
|
1007
827
|
vstride = (GLint)NUM2INT(arg8);
|
1008
828
|
vorder = (GLint)NUM2INT(arg9);
|
1009
829
|
points = ALLOC_N(GLfloat, MAX(ustride*uorder, vstride*vorder));
|
1010
|
-
work_ary =
|
1011
|
-
|
1012
|
-
ary2cflt(arg10, points, MAX(ustride*uorder, vstride*vorder));
|
830
|
+
work_ary = rb_funcall(arg10,rb_intern("flatten"),0);
|
831
|
+
ary2cflt(work_ary, points, MAX(ustride*uorder, vstride*vorder));
|
1013
832
|
glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
|
1014
833
|
xfree(points);
|
1015
|
-
|
1016
|
-
}
|
1017
|
-
|
1018
|
-
static VALUE
|
1019
|
-
gl_MapGrid1d(obj,arg1,arg2,arg3)
|
1020
|
-
VALUE obj,arg1,arg2,arg3;
|
1021
|
-
{
|
1022
|
-
GLint un;
|
1023
|
-
GLdouble u1;
|
1024
|
-
GLdouble u2;
|
1025
|
-
un = (GLint)NUM2INT(arg1);
|
1026
|
-
u1 = (GLdouble)NUM2DBL(arg2);
|
1027
|
-
u2 = (GLdouble)NUM2DBL(arg3);
|
1028
|
-
glMapGrid1d(un,u1,u2);
|
1029
|
-
return Qnil;
|
1030
|
-
}
|
1031
|
-
|
1032
|
-
static VALUE
|
1033
|
-
gl_MapGrid1f(obj,arg1,arg2,arg3)
|
1034
|
-
VALUE obj,arg1,arg2,arg3;
|
1035
|
-
{
|
1036
|
-
GLint un;
|
1037
|
-
GLfloat u1;
|
1038
|
-
GLfloat u2;
|
1039
|
-
un = (GLint)NUM2INT(arg1);
|
1040
|
-
u1 = (GLfloat)NUM2DBL(arg2);
|
1041
|
-
u2 = (GLfloat)NUM2DBL(arg3);
|
1042
|
-
glMapGrid1f(un,u1,u2);
|
1043
|
-
return Qnil;
|
1044
|
-
}
|
1045
|
-
|
1046
|
-
static VALUE
|
1047
|
-
gl_MapGrid2d(obj,arg1,arg2,arg3,arg4,arg5,arg6)
|
1048
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
1049
|
-
{
|
1050
|
-
GLint un;
|
1051
|
-
GLdouble u1;
|
1052
|
-
GLdouble u2;
|
1053
|
-
GLint vn;
|
1054
|
-
GLdouble v1;
|
1055
|
-
GLdouble v2;
|
1056
|
-
un = (GLint)NUM2INT(arg1);
|
1057
|
-
u1 = (GLdouble)NUM2DBL(arg2);
|
1058
|
-
u2 = (GLdouble)NUM2DBL(arg3);
|
1059
|
-
vn = (GLint)NUM2INT(arg4);
|
1060
|
-
v1 = (GLdouble)NUM2DBL(arg5);
|
1061
|
-
v2 = (GLdouble)NUM2DBL(arg6);
|
1062
|
-
glMapGrid2d(un,u1,u2,vn,v1,v2);
|
1063
|
-
return Qnil;
|
1064
|
-
}
|
1065
|
-
|
1066
|
-
static VALUE
|
1067
|
-
gl_MapGrid2f(obj,arg1,arg2,arg3,arg4,arg5,arg6)
|
1068
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
1069
|
-
{
|
1070
|
-
GLint un;
|
1071
|
-
GLfloat u1;
|
1072
|
-
GLfloat u2;
|
1073
|
-
GLint vn;
|
1074
|
-
GLfloat v1;
|
1075
|
-
GLfloat v2;
|
1076
|
-
un = (GLint)NUM2INT(arg1);
|
1077
|
-
u1 = (GLfloat)NUM2DBL(arg2);
|
1078
|
-
u2 = (GLfloat)NUM2DBL(arg3);
|
1079
|
-
vn = (GLint)NUM2INT(arg4);
|
1080
|
-
v1 = (GLfloat)NUM2DBL(arg5);
|
1081
|
-
v2 = (GLfloat)NUM2DBL(arg6);
|
1082
|
-
glMapGrid2f(un,u1,u2,vn,v1,v2);
|
834
|
+
CHECK_GLERROR
|
1083
835
|
return Qnil;
|
1084
836
|
}
|
1085
837
|
|
@@ -1091,6 +843,7 @@ VALUE obj,arg1;
|
|
1091
843
|
Check_Type(arg1,T_ARRAY);
|
1092
844
|
ary2cdbl(arg1,params,1);
|
1093
845
|
glEvalCoord1dv(params);
|
846
|
+
CHECK_GLERROR
|
1094
847
|
return Qnil;
|
1095
848
|
}
|
1096
849
|
|
@@ -1102,6 +855,7 @@ VALUE obj,arg1;
|
|
1102
855
|
Check_Type(arg1,T_ARRAY);
|
1103
856
|
ary2cflt(arg1,params,1);
|
1104
857
|
glEvalCoord1fv(params);
|
858
|
+
CHECK_GLERROR
|
1105
859
|
return Qnil;
|
1106
860
|
}
|
1107
861
|
|
@@ -1113,6 +867,7 @@ VALUE obj,arg1;
|
|
1113
867
|
Check_Type(arg1,T_ARRAY);
|
1114
868
|
ary2cdbl(arg1,params,2);
|
1115
869
|
glEvalCoord2dv(params);
|
870
|
+
CHECK_GLERROR
|
1116
871
|
return Qnil;
|
1117
872
|
}
|
1118
873
|
|
@@ -1124,114 +879,10 @@ VALUE obj,arg1;
|
|
1124
879
|
Check_Type(arg1,T_ARRAY);
|
1125
880
|
ary2cflt(arg1,params,2);
|
1126
881
|
glEvalCoord2fv(params);
|
882
|
+
CHECK_GLERROR
|
1127
883
|
return Qnil;
|
1128
884
|
}
|
1129
885
|
|
1130
|
-
static VALUE
|
1131
|
-
gl_EvalMesh1(obj,arg1,arg2,arg3)
|
1132
|
-
VALUE obj,arg1,arg2,arg3;
|
1133
|
-
{
|
1134
|
-
GLenum mode;
|
1135
|
-
GLint i1;
|
1136
|
-
GLint i2;
|
1137
|
-
mode = (GLenum)NUM2INT(arg1);
|
1138
|
-
i1 = (GLint)NUM2INT(arg2);
|
1139
|
-
i2 = (GLint)NUM2INT(arg3);
|
1140
|
-
glEvalMesh1(mode,i1,i2);
|
1141
|
-
return Qnil;
|
1142
|
-
}
|
1143
|
-
|
1144
|
-
static VALUE
|
1145
|
-
gl_EvalMesh2(obj,arg1,arg2,arg3,arg4,arg5)
|
1146
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5;
|
1147
|
-
{
|
1148
|
-
GLenum mode;
|
1149
|
-
GLint i1;
|
1150
|
-
GLint i2;
|
1151
|
-
GLint j1;
|
1152
|
-
GLint j2;
|
1153
|
-
mode = (GLenum)NUM2INT(arg1);
|
1154
|
-
i1 = (GLint)NUM2INT(arg2);
|
1155
|
-
i2 = (GLint)NUM2INT(arg3);
|
1156
|
-
j1 = (GLint)NUM2INT(arg4);
|
1157
|
-
j2 = (GLint)NUM2INT(arg5);
|
1158
|
-
glEvalMesh2(mode,i1,i2,j1,j2);
|
1159
|
-
return Qnil;
|
1160
|
-
}
|
1161
|
-
|
1162
|
-
static VALUE
|
1163
|
-
gl_AlphaFunc(obj,arg1,arg2)
|
1164
|
-
VALUE obj,arg1,arg2;
|
1165
|
-
{
|
1166
|
-
GLenum func;
|
1167
|
-
GLclampf ref;
|
1168
|
-
func = (GLenum)NUM2INT(arg1);
|
1169
|
-
ref = (GLclampf)NUM2DBL(arg2);
|
1170
|
-
glAlphaFunc(func,ref);
|
1171
|
-
return Qnil;
|
1172
|
-
}
|
1173
|
-
|
1174
|
-
static VALUE
|
1175
|
-
gl_StencilFunc(obj,arg1,arg2,arg3)
|
1176
|
-
VALUE obj,arg1,arg2,arg3;
|
1177
|
-
{
|
1178
|
-
GLenum func;
|
1179
|
-
GLint ref;
|
1180
|
-
GLuint mask;
|
1181
|
-
func = (GLenum)NUM2INT(arg1);
|
1182
|
-
ref = (GLint)NUM2INT(arg2);
|
1183
|
-
mask = (GLuint)NUM2UINT(arg3);
|
1184
|
-
glStencilFunc(func,ref,mask);
|
1185
|
-
return Qnil;
|
1186
|
-
}
|
1187
|
-
|
1188
|
-
static VALUE
|
1189
|
-
gl_PixelTransferf(obj,arg1,arg2)
|
1190
|
-
VALUE obj,arg1,arg2;
|
1191
|
-
{
|
1192
|
-
GLenum pname;
|
1193
|
-
GLfloat param;
|
1194
|
-
pname = (GLenum)NUM2INT(arg1);
|
1195
|
-
param = (GLfloat)NUM2DBL(arg2);
|
1196
|
-
glPixelTransferf(pname,param);
|
1197
|
-
return Qnil;
|
1198
|
-
}
|
1199
|
-
|
1200
|
-
static VALUE
|
1201
|
-
gl_PixelTransferi(obj,arg1,arg2)
|
1202
|
-
VALUE obj,arg1,arg2;
|
1203
|
-
{
|
1204
|
-
GLenum pname;
|
1205
|
-
GLint param;
|
1206
|
-
pname = (GLenum)NUM2INT(arg1);
|
1207
|
-
param = (GLint)NUM2INT(arg2);
|
1208
|
-
glPixelTransferi(pname,param);
|
1209
|
-
return Qnil;
|
1210
|
-
}
|
1211
|
-
|
1212
|
-
static VALUE
|
1213
|
-
gl_PixelStoref(obj,arg1,arg2)
|
1214
|
-
VALUE obj,arg1,arg2;
|
1215
|
-
{
|
1216
|
-
GLenum pname;
|
1217
|
-
GLfloat param;
|
1218
|
-
pname = (GLenum)NUM2INT(arg1);
|
1219
|
-
param = (GLfloat)NUM2DBL(arg2);
|
1220
|
-
glPixelStoref(pname,param);
|
1221
|
-
return Qnil;
|
1222
|
-
}
|
1223
|
-
|
1224
|
-
static VALUE
|
1225
|
-
gl_PixelStorei(obj,arg1,arg2)
|
1226
|
-
VALUE obj,arg1,arg2;
|
1227
|
-
{
|
1228
|
-
GLenum pname;
|
1229
|
-
GLint param;
|
1230
|
-
pname = (GLenum)NUM2INT(arg1);
|
1231
|
-
param = (GLint)NUM2INT(arg2);
|
1232
|
-
glPixelStorei(pname,param);
|
1233
|
-
return Qnil;
|
1234
|
-
}
|
1235
886
|
|
1236
887
|
#define GLPIXELMAP_FUNC(_type_,_vartype_,_convert_) \
|
1237
888
|
static VALUE \
|
@@ -1265,6 +916,7 @@ VALUE obj; \
|
|
1265
916
|
glPixelMap##_type_##v(map,size,(GLvoid *)NUM2INT(args[2])); \
|
1266
917
|
break; \
|
1267
918
|
} \
|
919
|
+
CHECK_GLERROR \
|
1268
920
|
return Qnil; \
|
1269
921
|
}
|
1270
922
|
|
@@ -1273,23 +925,6 @@ GLPIXELMAP_FUNC(ui,GLuint,ary2cuint)
|
|
1273
925
|
GLPIXELMAP_FUNC(us,GLushort,ary2cushort)
|
1274
926
|
#undef GLPIXELMAP_FUNC
|
1275
927
|
|
1276
|
-
static VALUE
|
1277
|
-
gl_CopyPixels(obj,arg1,arg2,arg3,arg4,arg5)
|
1278
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5;
|
1279
|
-
{
|
1280
|
-
GLint x;
|
1281
|
-
GLint y;
|
1282
|
-
GLsizei width;
|
1283
|
-
GLsizei height;
|
1284
|
-
GLenum type;
|
1285
|
-
x = (GLint)NUM2INT(arg1);
|
1286
|
-
y = (GLint)NUM2INT(arg2);
|
1287
|
-
width = (GLsizei)NUM2UINT(arg3);
|
1288
|
-
height = (GLsizei)NUM2UINT(arg4);
|
1289
|
-
type = (GLenum)NUM2INT(arg5);
|
1290
|
-
glCopyPixels(x,y,width,height,type);
|
1291
|
-
return Qnil;
|
1292
|
-
}
|
1293
928
|
|
1294
929
|
static VALUE
|
1295
930
|
gl_ReadPixels(argc,argv,obj)
|
@@ -1321,8 +956,9 @@ VALUE obj;
|
|
1321
956
|
rb_raise(rb_eArgError, "Pixel pack buffer bound, but offset argument missing");
|
1322
957
|
pixels = allocate_buffer_with_string(GetDataSize(type,format,width*height));
|
1323
958
|
FORCE_PIXEL_STORE_MODE
|
1324
|
-
glReadPixels(x,y,width,height,format,type,(GLvoid*)
|
959
|
+
glReadPixels(x,y,width,height,format,type,(GLvoid*)RSTRING_PTR(pixels));
|
1325
960
|
RESTORE_PIXEL_STORE_MODE
|
961
|
+
CHECK_GLERROR
|
1326
962
|
return pixels;
|
1327
963
|
break;
|
1328
964
|
case 7:
|
@@ -1331,6 +967,7 @@ VALUE obj;
|
|
1331
967
|
FORCE_PIXEL_STORE_MODE
|
1332
968
|
glReadPixels(x,y,width,height,format,type,(GLvoid*)NUM2INT(args[6]));
|
1333
969
|
RESTORE_PIXEL_STORE_MODE
|
970
|
+
CHECK_GLERROR
|
1334
971
|
return Qnil;
|
1335
972
|
break;
|
1336
973
|
}
|
@@ -1352,11 +989,13 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5;
|
|
1352
989
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
1353
990
|
glDrawPixels(width,height,format,type,(GLvoid *)NUM2INT(arg5));
|
1354
991
|
} else {
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
992
|
+
VALUE data;
|
993
|
+
data = pack_array_or_pass_string(type,arg5);
|
994
|
+
CheckDataSize(type,format,width*height,data);
|
995
|
+
pixels = RSTRING_PTR(data);
|
1358
996
|
glDrawPixels(width,height,format,type,pixels);
|
1359
997
|
}
|
998
|
+
CHECK_GLERROR
|
1360
999
|
return Qnil;
|
1361
1000
|
}
|
1362
1001
|
|
@@ -1373,6 +1012,7 @@ VALUE obj,arg1;
|
|
1373
1012
|
retary = rb_ary_new2(4);
|
1374
1013
|
for(i=0;i<4;i++)
|
1375
1014
|
rb_ary_push(retary, rb_float_new(equation[i]));
|
1015
|
+
CHECK_GLERROR
|
1376
1016
|
return retary;
|
1377
1017
|
}
|
1378
1018
|
|
@@ -1415,6 +1055,7 @@ VALUE obj,arg1; \
|
|
1415
1055
|
case GL_CONSTANT_COLOR1_NV: \
|
1416
1056
|
case GL_TEXTURE_COLOR_WRITEMASK_SGIS: \
|
1417
1057
|
case GL_FLOAT_CLEAR_COLOR_VALUE_NV: \
|
1058
|
+
case GL_RGBA_SIGNED_COMPONENTS_EXT: \
|
1418
1059
|
nitems = 4; \
|
1419
1060
|
break; \
|
1420
1061
|
case GL_CURRENT_NORMAL: \
|
@@ -1449,6 +1090,7 @@ VALUE obj,arg1; \
|
|
1449
1090
|
case GL_TRANSPOSE_PROJECTION_MATRIX: \
|
1450
1091
|
case GL_TRANSPOSE_TEXTURE_MATRIX: \
|
1451
1092
|
case GL_TRANSPOSE_COLOR_MATRIX: \
|
1093
|
+
case GL_TRANSPOSE_CURRENT_MATRIX_ARB: \
|
1452
1094
|
case GL_MODELVIEW0_ARB: \
|
1453
1095
|
case GL_MODELVIEW1_ARB: \
|
1454
1096
|
case GL_MODELVIEW2_ARB: \
|
@@ -1493,41 +1135,38 @@ VALUE obj,arg1; \
|
|
1493
1135
|
for (j = 0; j < 4; j++) \
|
1494
1136
|
rb_ary_push(ary2, _conv_(items[i*4+j])); \
|
1495
1137
|
} \
|
1138
|
+
CHECK_GLERROR \
|
1496
1139
|
return ary; \
|
1497
1140
|
case GL_POLYGON_STIPPLE: \
|
1498
1141
|
glGet##_name_##v(pname, items); \
|
1142
|
+
CHECK_GLERROR \
|
1499
1143
|
return rb_str_new((const char*)items, 32); \
|
1500
1144
|
case GL_COMPRESSED_TEXTURE_FORMATS: \
|
1501
1145
|
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &nitems); \
|
1146
|
+
CHECK_GLERROR \
|
1502
1147
|
if (nitems<=0||nitems>64) \
|
1503
1148
|
return INT2NUM(0); \
|
1504
1149
|
break; \
|
1505
1150
|
default: /* size=1 */ \
|
1506
1151
|
glGet##_name_##v(pname, items); \
|
1152
|
+
CHECK_GLERROR \
|
1507
1153
|
return _conv_(items[0]); \
|
1508
1154
|
} \
|
1509
1155
|
glGet##_name_##v(pname, items); \
|
1510
1156
|
ary = rb_ary_new2(nitems); \
|
1511
1157
|
for (i = 0; i < nitems; i++) \
|
1512
1158
|
rb_ary_push(ary, _conv_(items[i])); \
|
1159
|
+
CHECK_GLERROR \
|
1513
1160
|
return ary; \
|
1514
1161
|
}
|
1515
1162
|
|
1516
1163
|
GLGET_FUNC(Double,GLdouble,rb_float_new)
|
1517
1164
|
GLGET_FUNC(Float,GLfloat,rb_float_new)
|
1518
1165
|
GLGET_FUNC(Integer,GLint,INT2NUM)
|
1519
|
-
GLGET_FUNC(Boolean,GLboolean,
|
1166
|
+
GLGET_FUNC(Boolean,GLboolean,GLBOOL2RUBY)
|
1520
1167
|
|
1521
1168
|
#undef GLGET_FUNC
|
1522
1169
|
|
1523
|
-
static VALUE
|
1524
|
-
gl_GetError(obj)
|
1525
|
-
VALUE obj;
|
1526
|
-
{
|
1527
|
-
GLenum ret;
|
1528
|
-
ret = glGetError();
|
1529
|
-
return INT2NUM(ret);
|
1530
|
-
}
|
1531
1170
|
|
1532
1171
|
static VALUE
|
1533
1172
|
gl_GetLightfv(obj,arg1,arg2)
|
@@ -1537,8 +1176,6 @@ VALUE obj,arg1,arg2;
|
|
1537
1176
|
GLenum pname;
|
1538
1177
|
GLsizei size;
|
1539
1178
|
GLfloat params[4] = {0.0,0.0,0.0,0.0};
|
1540
|
-
VALUE retary;
|
1541
|
-
int i;
|
1542
1179
|
light = (GLenum)NUM2INT(arg1);
|
1543
1180
|
pname = (GLenum)NUM2INT(arg2);
|
1544
1181
|
switch(pname) {
|
@@ -1563,10 +1200,7 @@ VALUE obj,arg1,arg2;
|
|
1563
1200
|
break; /* not reached */
|
1564
1201
|
}
|
1565
1202
|
glGetLightfv(light,pname,params);
|
1566
|
-
|
1567
|
-
for(i=0;i<size;i++)
|
1568
|
-
rb_ary_push(retary, rb_float_new(params[i]));
|
1569
|
-
return retary;
|
1203
|
+
RET_ARRAY_OR_SINGLE(size,rb_float_new,params)
|
1570
1204
|
}
|
1571
1205
|
|
1572
1206
|
static VALUE
|
@@ -1577,8 +1211,6 @@ VALUE obj,arg1,arg2;
|
|
1577
1211
|
GLenum pname;
|
1578
1212
|
GLsizei size;
|
1579
1213
|
GLint params[4] = {0,0,0,0};
|
1580
|
-
VALUE retary;
|
1581
|
-
int i;
|
1582
1214
|
light = (GLenum)NUM2INT(arg1);
|
1583
1215
|
pname = (GLenum)NUM2INT(arg2);
|
1584
1216
|
switch(pname) {
|
@@ -1603,194 +1235,71 @@ VALUE obj,arg1,arg2;
|
|
1603
1235
|
break; /* not reached */
|
1604
1236
|
}
|
1605
1237
|
glGetLightiv(light,pname,params);
|
1606
|
-
|
1607
|
-
for(i=0;i<size;i++)
|
1608
|
-
rb_ary_push(retary, INT2NUM(params[i]));
|
1609
|
-
return retary;
|
1610
|
-
}
|
1611
|
-
|
1612
|
-
static VALUE
|
1613
|
-
gl_GetMapdv(obj,arg1,arg2)
|
1614
|
-
VALUE obj,arg1,arg2;
|
1615
|
-
{
|
1616
|
-
GLenum target;
|
1617
|
-
GLenum query;
|
1618
|
-
int dims;
|
1619
|
-
int pointsize;
|
1620
|
-
int size=0;
|
1621
|
-
int i;
|
1622
|
-
GLdouble *points;
|
1623
|
-
VALUE retary;
|
1624
|
-
GLint order[2] = {0,0}; /* for GL_COEFF, [order] or [uorder,vorder] (MAP1/MAP2) */
|
1625
|
-
target = (GLenum)NUM2INT(arg1);
|
1626
|
-
query = (GLenum)NUM2INT(arg2);
|
1627
|
-
switch(target) {
|
1628
|
-
case GL_MAP1_INDEX:
|
1629
|
-
case GL_MAP1_TEXTURE_COORD_1: dims=1; pointsize=1; break;
|
1630
|
-
case GL_MAP1_TEXTURE_COORD_2: dims=1; pointsize=2; break;
|
1631
|
-
case GL_MAP1_VERTEX_3:
|
1632
|
-
case GL_MAP1_NORMAL:
|
1633
|
-
case GL_MAP1_TEXTURE_COORD_3: dims=1; pointsize=3; break;
|
1634
|
-
case GL_MAP1_COLOR_4:
|
1635
|
-
case GL_MAP1_TEXTURE_COORD_4:
|
1636
|
-
case GL_MAP1_VERTEX_4: dims=1; pointsize=4; break;
|
1637
|
-
case GL_MAP2_INDEX:
|
1638
|
-
case GL_MAP2_TEXTURE_COORD_1: dims=2; pointsize=1; break;
|
1639
|
-
case GL_MAP2_TEXTURE_COORD_2: dims=2; pointsize=2; break;
|
1640
|
-
case GL_MAP2_VERTEX_3:
|
1641
|
-
case GL_MAP2_NORMAL:
|
1642
|
-
case GL_MAP2_TEXTURE_COORD_3: dims=2; pointsize=3; break;
|
1643
|
-
case GL_MAP2_COLOR_4:
|
1644
|
-
case GL_MAP2_TEXTURE_COORD_4:
|
1645
|
-
case GL_MAP2_VERTEX_4: dims=2; pointsize=4; break;
|
1646
|
-
default:
|
1647
|
-
rb_raise(rb_eArgError, "unknown target:%d",target);
|
1648
|
-
break; /* not reached */
|
1649
|
-
}
|
1650
|
-
switch(query) {
|
1651
|
-
case GL_ORDER: size = dims; break;
|
1652
|
-
case GL_DOMAIN: size = dims*2; break;
|
1653
|
-
case GL_COEFF:
|
1654
|
-
glGetMapiv(target,GL_ORDER,order);
|
1655
|
-
if (dims==1)
|
1656
|
-
size = order[0] * pointsize;
|
1657
|
-
else
|
1658
|
-
size = (order[0]*order[1]) * pointsize;
|
1659
|
-
break;
|
1660
|
-
default:
|
1661
|
-
rb_raise(rb_eArgError, "unknown target:%d",target);
|
1662
|
-
break; /* not reached */
|
1663
|
-
}
|
1664
|
-
points = ALLOC_N(GLdouble,size);
|
1665
|
-
glGetMapdv(target,query,points);
|
1666
|
-
retary = rb_ary_new2(size);
|
1667
|
-
for(i=0;i<size;i++)
|
1668
|
-
rb_ary_push(retary, rb_float_new(points[i]));
|
1669
|
-
xfree(points);
|
1670
|
-
return retary;
|
1238
|
+
RET_ARRAY_OR_SINGLE(size,INT2NUM,params)
|
1671
1239
|
}
|
1672
1240
|
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
GLenum
|
1679
|
-
|
1680
|
-
int
|
1681
|
-
int
|
1682
|
-
int
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
case
|
1690
|
-
case
|
1691
|
-
case
|
1692
|
-
case
|
1693
|
-
case
|
1694
|
-
case
|
1695
|
-
case
|
1696
|
-
case
|
1697
|
-
case
|
1698
|
-
case
|
1699
|
-
case
|
1700
|
-
case
|
1701
|
-
case
|
1702
|
-
case
|
1703
|
-
case
|
1704
|
-
case
|
1705
|
-
case
|
1706
|
-
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
case
|
1713
|
-
case
|
1714
|
-
|
1715
|
-
|
1716
|
-
if (dims==1)
|
1717
|
-
size = order[0] * pointsize;
|
1718
|
-
else
|
1719
|
-
size = (order[0]*order[1]) * pointsize;
|
1720
|
-
break;
|
1721
|
-
default:
|
1722
|
-
rb_raise(rb_eArgError, "unknown target:%d",target);
|
1723
|
-
break; /* not reached */
|
1724
|
-
}
|
1725
|
-
points = ALLOC_N(
|
1726
|
-
|
1727
|
-
|
1728
|
-
|
1729
|
-
rb_ary_push(retary, rb_float_new(points[i]));
|
1730
|
-
xfree(points);
|
1731
|
-
return retary;
|
1241
|
+
#define GETMAP_FUNC(_name_,_type_) \
|
1242
|
+
static VALUE \
|
1243
|
+
gl_##_name_(obj,arg1,arg2) \
|
1244
|
+
VALUE obj,arg1,arg2; \
|
1245
|
+
{ \
|
1246
|
+
GLenum target; \
|
1247
|
+
GLenum query; \
|
1248
|
+
int dims; \
|
1249
|
+
int pointsize; \
|
1250
|
+
int size=0; \
|
1251
|
+
_type_ *points; \
|
1252
|
+
GLint order[2] = {0,0}; /* for GL_COEFF, [order] or [uorder,vorder] (MAP1/MAP2) */ \
|
1253
|
+
target = (GLenum)NUM2INT(arg1); \
|
1254
|
+
query = (GLenum)NUM2INT(arg2); \
|
1255
|
+
switch(target) { \
|
1256
|
+
case GL_MAP1_INDEX: \
|
1257
|
+
case GL_MAP1_TEXTURE_COORD_1: dims=1; pointsize=1; break; \
|
1258
|
+
case GL_MAP1_TEXTURE_COORD_2: dims=1; pointsize=2; break; \
|
1259
|
+
case GL_MAP1_VERTEX_3: \
|
1260
|
+
case GL_MAP1_NORMAL: \
|
1261
|
+
case GL_MAP1_TEXTURE_COORD_3: dims=1; pointsize=3; break; \
|
1262
|
+
case GL_MAP1_COLOR_4: \
|
1263
|
+
case GL_MAP1_TEXTURE_COORD_4: \
|
1264
|
+
case GL_MAP1_VERTEX_4: dims=1; pointsize=4; break; \
|
1265
|
+
case GL_MAP2_INDEX: \
|
1266
|
+
case GL_MAP2_TEXTURE_COORD_1: dims=2; pointsize=1; break; \
|
1267
|
+
case GL_MAP2_TEXTURE_COORD_2: dims=2; pointsize=2; break; \
|
1268
|
+
case GL_MAP2_VERTEX_3: \
|
1269
|
+
case GL_MAP2_NORMAL: \
|
1270
|
+
case GL_MAP2_TEXTURE_COORD_3: dims=2; pointsize=3; break; \
|
1271
|
+
case GL_MAP2_COLOR_4: \
|
1272
|
+
case GL_MAP2_TEXTURE_COORD_4: \
|
1273
|
+
case GL_MAP2_VERTEX_4: dims=2; pointsize=4; break; \
|
1274
|
+
default: \
|
1275
|
+
rb_raise(rb_eArgError, "unknown target:%d",target); \
|
1276
|
+
break; /* not reached */ \
|
1277
|
+
} \
|
1278
|
+
switch(query) { \
|
1279
|
+
case GL_ORDER: size = dims; break; \
|
1280
|
+
case GL_DOMAIN: size = dims*2; break; \
|
1281
|
+
case GL_COEFF: \
|
1282
|
+
glGetMapiv(target,GL_ORDER,order); \
|
1283
|
+
CHECK_GLERROR \
|
1284
|
+
if (dims==1) \
|
1285
|
+
size = order[0] * pointsize; \
|
1286
|
+
else \
|
1287
|
+
size = (order[0]*order[1]) * pointsize; \
|
1288
|
+
break; \
|
1289
|
+
default: \
|
1290
|
+
rb_raise(rb_eArgError, "unknown target:%d",target); \
|
1291
|
+
break; /* not reached */ \
|
1292
|
+
} \
|
1293
|
+
points = ALLOC_N(_type_,size); \
|
1294
|
+
gl##_name_(target,query,points); \
|
1295
|
+
\
|
1296
|
+
RET_ARRAY_OR_SINGLE_FREE(size,RETCONV_##_type_,points) \
|
1732
1297
|
}
|
1733
1298
|
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
GLenum target;
|
1739
|
-
GLenum query;
|
1740
|
-
int dims;
|
1741
|
-
int pointsize;
|
1742
|
-
int size=0;
|
1743
|
-
int i;
|
1744
|
-
GLint *points;
|
1745
|
-
VALUE retary;
|
1746
|
-
GLint order[2] = {0,0}; /* for GL_COEFF, [order] or [uorder,vorder] (MAP1/MAP2) */
|
1747
|
-
target = (GLenum)NUM2INT(arg1);
|
1748
|
-
query = (GLenum)NUM2INT(arg2);
|
1749
|
-
switch(target) {
|
1750
|
-
case GL_MAP1_INDEX:
|
1751
|
-
case GL_MAP1_TEXTURE_COORD_1: dims=1; pointsize=1; break;
|
1752
|
-
case GL_MAP1_TEXTURE_COORD_2: dims=1; pointsize=2; break;
|
1753
|
-
case GL_MAP1_VERTEX_3:
|
1754
|
-
case GL_MAP1_NORMAL:
|
1755
|
-
case GL_MAP1_TEXTURE_COORD_3: dims=1; pointsize=3; break;
|
1756
|
-
case GL_MAP1_COLOR_4:
|
1757
|
-
case GL_MAP1_TEXTURE_COORD_4:
|
1758
|
-
case GL_MAP1_VERTEX_4: dims=1; pointsize=4; break;
|
1759
|
-
case GL_MAP2_INDEX:
|
1760
|
-
case GL_MAP2_TEXTURE_COORD_1: dims=2; pointsize=1; break;
|
1761
|
-
case GL_MAP2_TEXTURE_COORD_2: dims=2; pointsize=2; break;
|
1762
|
-
case GL_MAP2_VERTEX_3:
|
1763
|
-
case GL_MAP2_NORMAL:
|
1764
|
-
case GL_MAP2_TEXTURE_COORD_3: dims=2; pointsize=3; break;
|
1765
|
-
case GL_MAP2_COLOR_4:
|
1766
|
-
case GL_MAP2_TEXTURE_COORD_4:
|
1767
|
-
case GL_MAP2_VERTEX_4: dims=2; pointsize=4; break;
|
1768
|
-
default:
|
1769
|
-
rb_raise(rb_eArgError, "unknown target:%d",target);
|
1770
|
-
break; /* not reached */
|
1771
|
-
}
|
1772
|
-
switch(query) {
|
1773
|
-
case GL_ORDER: size = dims; break;
|
1774
|
-
case GL_DOMAIN: size = dims*2; break;
|
1775
|
-
case GL_COEFF:
|
1776
|
-
glGetMapiv(target,GL_ORDER,order);
|
1777
|
-
if (dims==1)
|
1778
|
-
size = order[0] * pointsize;
|
1779
|
-
else
|
1780
|
-
size = (order[0]*order[1]) * pointsize;
|
1781
|
-
break;
|
1782
|
-
default:
|
1783
|
-
rb_raise(rb_eArgError, "unknown target:%d",target);
|
1784
|
-
break; /* not reached */
|
1785
|
-
}
|
1786
|
-
points = ALLOC_N(GLint,size);
|
1787
|
-
glGetMapiv(target,query,points);
|
1788
|
-
retary = rb_ary_new2(size);
|
1789
|
-
for(i=0;i<size;i++)
|
1790
|
-
rb_ary_push(retary, INT2NUM(points[i]));
|
1791
|
-
xfree(points);
|
1792
|
-
return retary;
|
1793
|
-
}
|
1299
|
+
GETMAP_FUNC(GetMapdv,GLdouble)
|
1300
|
+
GETMAP_FUNC(GetMapfv,GLfloat)
|
1301
|
+
GETMAP_FUNC(GetMapiv,GLint)
|
1302
|
+
#undef GETMAP_FUNC
|
1794
1303
|
|
1795
1304
|
static VALUE
|
1796
1305
|
gl_GetMaterialfv(obj,arg1,arg2)
|
@@ -1800,8 +1309,6 @@ VALUE obj,arg1,arg2;
|
|
1800
1309
|
GLenum pname;
|
1801
1310
|
GLfloat params[4] = {0.0,0.0,0.0,0.0};
|
1802
1311
|
int size;
|
1803
|
-
VALUE retary;
|
1804
|
-
int i;
|
1805
1312
|
face = (GLenum)NUM2INT(arg1);
|
1806
1313
|
pname = (GLenum)NUM2INT(arg2);
|
1807
1314
|
switch(pname) {
|
@@ -1822,10 +1329,7 @@ VALUE obj,arg1,arg2;
|
|
1822
1329
|
break; /* not reached */
|
1823
1330
|
}
|
1824
1331
|
glGetMaterialfv(face,pname,params);
|
1825
|
-
|
1826
|
-
for(i=0;i<size;i++)
|
1827
|
-
rb_ary_push(retary, rb_float_new(params[i]));
|
1828
|
-
return retary;
|
1332
|
+
RET_ARRAY_OR_SINGLE(size,rb_float_new,params)
|
1829
1333
|
}
|
1830
1334
|
|
1831
1335
|
static VALUE
|
@@ -1836,8 +1340,6 @@ VALUE obj,arg1,arg2;
|
|
1836
1340
|
GLenum pname;
|
1837
1341
|
GLint params[4] = {0,0,0,0};
|
1838
1342
|
int size;
|
1839
|
-
VALUE retary;
|
1840
|
-
int i;
|
1841
1343
|
face = (GLenum)NUM2INT(arg1);
|
1842
1344
|
pname = (GLenum)NUM2INT(arg2);
|
1843
1345
|
switch(pname) {
|
@@ -1858,10 +1360,7 @@ VALUE obj,arg1,arg2;
|
|
1858
1360
|
break; /* not reached */
|
1859
1361
|
}
|
1860
1362
|
glGetMaterialiv(face,pname,params);
|
1861
|
-
|
1862
|
-
for(i=0;i<size;i++)
|
1863
|
-
rb_ary_push(retary, INT2NUM(params[i]));
|
1864
|
-
return retary;
|
1363
|
+
RET_ARRAY_OR_SINGLE(size,INT2NUM,params)
|
1865
1364
|
}
|
1866
1365
|
|
1867
1366
|
#define GLGETPIXELMAP_FUNC(_type_,_vartype_,_convert_) \
|
@@ -1875,9 +1374,7 @@ VALUE obj; \
|
|
1875
1374
|
GLenum map_size; \
|
1876
1375
|
GLint size = 0; \
|
1877
1376
|
_vartype_ *values; \
|
1878
|
-
VALUE retary; \
|
1879
1377
|
VALUE args[2]; \
|
1880
|
-
int i; \
|
1881
1378
|
switch (rb_scan_args(argc, argv, "11", &args[0], &args[1])) { \
|
1882
1379
|
default: \
|
1883
1380
|
case 1: \
|
@@ -1901,19 +1398,18 @@ VALUE obj; \
|
|
1901
1398
|
break; \
|
1902
1399
|
} \
|
1903
1400
|
glGetIntegerv(map_size,&size); \
|
1401
|
+
CHECK_GLERROR \
|
1904
1402
|
values = ALLOC_N(_vartype_,size); \
|
1905
1403
|
glGetPixelMap##_type_##v(map,values); \
|
1906
|
-
|
1907
|
-
|
1908
|
-
rb_ary_push(retary, _convert_(values[i])); \
|
1909
|
-
xfree(values); \
|
1910
|
-
return retary; \
|
1404
|
+
RET_ARRAY_OR_SINGLE_FREE(size,_convert_,values) \
|
1405
|
+
break; \
|
1911
1406
|
case 2: \
|
1912
1407
|
if (!CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING)) \
|
1913
1408
|
rb_raise(rb_eArgError, "Pixel pack buffer not bound"); \
|
1914
1409
|
\
|
1915
1410
|
map = (GLenum)NUM2INT(args[0]); \
|
1916
1411
|
glGetPixelMap##_type_##v(map,(GLvoid*)NUM2INT(args[1])); \
|
1412
|
+
CHECK_GLERROR \
|
1917
1413
|
return Qnil; \
|
1918
1414
|
} \
|
1919
1415
|
}
|
@@ -1940,11 +1436,13 @@ VALUE obj;
|
|
1940
1436
|
FORCE_PIXEL_STORE_MODE
|
1941
1437
|
glGetPolygonStipple(mask);
|
1942
1438
|
RESTORE_PIXEL_STORE_MODE
|
1439
|
+
CHECK_GLERROR
|
1943
1440
|
return rb_str_new((const char*)mask, 128);
|
1944
1441
|
case 1:
|
1945
1442
|
if (!CheckBufferBinding(GL_PIXEL_PACK_BUFFER_BINDING))
|
1946
1443
|
rb_raise(rb_eArgError, "Pixel pack buffer not bound");
|
1947
1444
|
glGetPolygonStipple((GLvoid *)NUM2INT(args[0]));
|
1445
|
+
CHECK_GLERROR
|
1948
1446
|
return Qnil;
|
1949
1447
|
}
|
1950
1448
|
}
|
@@ -1957,158 +1455,71 @@ VALUE obj,arg1;
|
|
1957
1455
|
const GLubyte *ret;
|
1958
1456
|
name = (GLenum)NUM2INT(arg1);
|
1959
1457
|
ret = glGetString(name);
|
1458
|
+
CHECK_GLERROR
|
1960
1459
|
return rb_str_new2((const char*)ret);
|
1961
1460
|
}
|
1962
1461
|
|
1963
|
-
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
GLenum
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
1974
|
-
pname
|
1975
|
-
|
1976
|
-
case
|
1977
|
-
case
|
1978
|
-
case
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
1990
|
-
retary = rb_ary_new2(size);
|
1991
|
-
for(i=0;i<size;i++)
|
1992
|
-
rb_ary_push(retary, rb_float_new(params[i]));
|
1993
|
-
return retary;
|
1994
|
-
}
|
1995
|
-
|
1996
|
-
static VALUE
|
1997
|
-
gl_GetTexEnviv(obj,arg1,arg2)
|
1998
|
-
VALUE obj,arg1,arg2;
|
1999
|
-
{
|
2000
|
-
GLenum target;
|
2001
|
-
GLenum pname;
|
2002
|
-
GLint params[4] = {0,0,0,0};
|
2003
|
-
int size;
|
2004
|
-
VALUE retary;
|
2005
|
-
int i;
|
2006
|
-
target = (GLenum)NUM2INT(arg1);
|
2007
|
-
pname = (GLenum)NUM2INT(arg2);
|
2008
|
-
switch(pname) {
|
2009
|
-
case GL_TEXTURE_ENV_COLOR:
|
2010
|
-
case GL_TEXTURE_ENV_BIAS_SGIX:
|
2011
|
-
case GL_CULL_MODES_NV:
|
2012
|
-
case GL_OFFSET_TEXTURE_MATRIX_NV:
|
2013
|
-
size = 4;
|
2014
|
-
break;
|
2015
|
-
case GL_CONST_EYE_NV:
|
2016
|
-
size = 3;
|
2017
|
-
break;
|
2018
|
-
default:
|
2019
|
-
size = 1;
|
2020
|
-
break;
|
2021
|
-
}
|
2022
|
-
glGetTexEnviv(target,pname,params);
|
2023
|
-
retary = rb_ary_new2(size);
|
2024
|
-
for(i=0;i<size;i++)
|
2025
|
-
rb_ary_push(retary, INT2NUM(params[i]));
|
2026
|
-
return retary;
|
1462
|
+
#define GETTEXENVFUNC(_name_,_type_) \
|
1463
|
+
static VALUE \
|
1464
|
+
gl_##_name_(obj,arg1,arg2) \
|
1465
|
+
VALUE obj,arg1,arg2; \
|
1466
|
+
{ \
|
1467
|
+
GLenum target; \
|
1468
|
+
GLenum pname; \
|
1469
|
+
_type_ params[4] = {0.0,0.0,0.0,0.0}; \
|
1470
|
+
int size; \
|
1471
|
+
target = (GLenum)NUM2INT(arg1); \
|
1472
|
+
pname = (GLenum)NUM2INT(arg2); \
|
1473
|
+
switch(pname) { \
|
1474
|
+
case GL_TEXTURE_ENV_COLOR: \
|
1475
|
+
case GL_TEXTURE_ENV_BIAS_SGIX: \
|
1476
|
+
case GL_CULL_MODES_NV: \
|
1477
|
+
case GL_OFFSET_TEXTURE_MATRIX_NV: \
|
1478
|
+
size = 4; \
|
1479
|
+
break; \
|
1480
|
+
case GL_CONST_EYE_NV: \
|
1481
|
+
size = 3; \
|
1482
|
+
break; \
|
1483
|
+
default: \
|
1484
|
+
size = 1; \
|
1485
|
+
break; \
|
1486
|
+
} \
|
1487
|
+
gl##_name_(target,pname,params); \
|
1488
|
+
RET_ARRAY_OR_SINGLE(size,RETCONV_##_type_,params) \
|
2027
1489
|
}
|
2028
1490
|
|
2029
|
-
|
2030
|
-
|
2031
|
-
|
2032
|
-
{
|
2033
|
-
GLenum coord;
|
2034
|
-
GLenum pname;
|
2035
|
-
GLdouble params[4] = {0.0,0.0,0.0,0.0};
|
2036
|
-
int size;
|
2037
|
-
VALUE retary;
|
2038
|
-
int i;
|
2039
|
-
coord = (GLenum)NUM2INT(arg1);
|
2040
|
-
pname = (GLenum)NUM2INT(arg2);
|
2041
|
-
switch(pname) {
|
2042
|
-
case GL_OBJECT_PLANE:
|
2043
|
-
case GL_EYE_PLANE:
|
2044
|
-
size = 4;
|
2045
|
-
break;
|
2046
|
-
default:
|
2047
|
-
size = 1;
|
2048
|
-
break;
|
2049
|
-
}
|
2050
|
-
glGetTexGendv(coord,pname,params);
|
2051
|
-
retary = rb_ary_new2(size);
|
2052
|
-
for(i=0;i<size;i++)
|
2053
|
-
rb_ary_push(retary, rb_float_new(params[i]));
|
2054
|
-
return retary;
|
2055
|
-
}
|
1491
|
+
GETTEXENVFUNC(GetTexEnvfv,GLfloat)
|
1492
|
+
GETTEXENVFUNC(GetTexEnviv,GLint)
|
1493
|
+
#undef GETTEXENVFUNC
|
2056
1494
|
|
2057
|
-
|
2058
|
-
|
2059
|
-
|
2060
|
-
|
2061
|
-
|
2062
|
-
GLenum
|
2063
|
-
|
2064
|
-
|
2065
|
-
|
2066
|
-
|
2067
|
-
|
2068
|
-
pname
|
2069
|
-
|
2070
|
-
case
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
|
2075
|
-
|
2076
|
-
|
2077
|
-
|
2078
|
-
|
2079
|
-
retary = rb_ary_new2(size);
|
2080
|
-
for(i=0;i<size;i++)
|
2081
|
-
rb_ary_push(retary, rb_float_new(params[i]));
|
2082
|
-
return retary;
|
1495
|
+
#define GETTEXGENFUNC(_name_,_type_) \
|
1496
|
+
static VALUE \
|
1497
|
+
gl_##_name_(obj,arg1,arg2) \
|
1498
|
+
VALUE obj,arg1,arg2; \
|
1499
|
+
{ \
|
1500
|
+
GLenum coord; \
|
1501
|
+
GLenum pname; \
|
1502
|
+
_type_ params[4] = {0.0,0.0,0.0,0.0}; \
|
1503
|
+
int size; \
|
1504
|
+
coord = (GLenum)NUM2INT(arg1); \
|
1505
|
+
pname = (GLenum)NUM2INT(arg2); \
|
1506
|
+
switch(pname) { \
|
1507
|
+
case GL_OBJECT_PLANE: \
|
1508
|
+
case GL_EYE_PLANE: \
|
1509
|
+
size = 4; \
|
1510
|
+
break; \
|
1511
|
+
default: \
|
1512
|
+
size = 1; \
|
1513
|
+
break; \
|
1514
|
+
} \
|
1515
|
+
gl##_name_(coord,pname,params); \
|
1516
|
+
RET_ARRAY_OR_SINGLE(size,RETCONV_##_type_,params) \
|
2083
1517
|
}
|
2084
1518
|
|
2085
|
-
|
2086
|
-
|
2087
|
-
|
2088
|
-
|
2089
|
-
GLenum coord;
|
2090
|
-
GLenum pname;
|
2091
|
-
GLint params[4] = {0,0,0,0};
|
2092
|
-
int size;
|
2093
|
-
VALUE retary;
|
2094
|
-
int i;
|
2095
|
-
coord = (GLenum)NUM2INT(arg1);
|
2096
|
-
pname = (GLenum)NUM2INT(arg2);
|
2097
|
-
switch(pname) {
|
2098
|
-
case GL_OBJECT_PLANE:
|
2099
|
-
case GL_EYE_PLANE:
|
2100
|
-
size = 4;
|
2101
|
-
break;
|
2102
|
-
default:
|
2103
|
-
size = 1;
|
2104
|
-
break;
|
2105
|
-
}
|
2106
|
-
glGetTexGeniv(coord,pname,params);
|
2107
|
-
retary = rb_ary_new2(size);
|
2108
|
-
for(i=0;i<size;i++)
|
2109
|
-
rb_ary_push(retary, INT2NUM(params[i]));
|
2110
|
-
return retary;
|
2111
|
-
}
|
1519
|
+
GETTEXGENFUNC(GetTexGendv,GLdouble)
|
1520
|
+
GETTEXGENFUNC(GetTexGenfv,GLfloat)
|
1521
|
+
GETTEXGENFUNC(GetTexGeniv,GLint)
|
1522
|
+
#undef GETTEXGENFUNC
|
2112
1523
|
|
2113
1524
|
static VALUE
|
2114
1525
|
gl_GetTexImage(argc,argv,obj)
|
@@ -2170,11 +1581,13 @@ VALUE obj;
|
|
2170
1581
|
default:
|
2171
1582
|
rb_raise(rb_eArgError, "Target type not supported");
|
2172
1583
|
}
|
1584
|
+
CHECK_GLERROR
|
2173
1585
|
pixels = allocate_buffer_with_string(GetDataSize(type,format,size));
|
2174
1586
|
|
2175
1587
|
FORCE_PIXEL_STORE_MODE
|
2176
|
-
glGetTexImage(tex,lod,format,type,(GLvoid*)
|
1588
|
+
glGetTexImage(tex,lod,format,type,(GLvoid*)RSTRING_PTR(pixels));
|
2177
1589
|
RESTORE_PIXEL_STORE_MODE
|
1590
|
+
CHECK_GLERROR
|
2178
1591
|
return pixels;
|
2179
1592
|
break;
|
2180
1593
|
case 5:
|
@@ -2184,6 +1597,7 @@ VALUE obj;
|
|
2184
1597
|
FORCE_PIXEL_STORE_MODE
|
2185
1598
|
glGetTexImage(tex,lod,format,type,(GLvoid*)NUM2INT(args[4]));
|
2186
1599
|
RESTORE_PIXEL_STORE_MODE
|
1600
|
+
CHECK_GLERROR
|
2187
1601
|
return Qnil;
|
2188
1602
|
}
|
2189
1603
|
}
|
@@ -2196,8 +1610,6 @@ VALUE obj,arg1,arg2;
|
|
2196
1610
|
GLenum pname;
|
2197
1611
|
GLfloat params[4] = {0.0,0.0,0.0,0.0};
|
2198
1612
|
int size;
|
2199
|
-
VALUE retary;
|
2200
|
-
int i;
|
2201
1613
|
target = (GLenum)NUM2INT(arg1);
|
2202
1614
|
pname = (GLenum)NUM2INT(arg2);
|
2203
1615
|
switch(pname) {
|
@@ -2212,10 +1624,7 @@ VALUE obj,arg1,arg2;
|
|
2212
1624
|
break;
|
2213
1625
|
}
|
2214
1626
|
glGetTexParameterfv(target,pname,params);
|
2215
|
-
|
2216
|
-
for(i=0;i<size;i++)
|
2217
|
-
rb_ary_push(retary, rb_float_new(params[i]));
|
2218
|
-
return retary;
|
1627
|
+
RET_ARRAY_OR_SINGLE(size,RETCONV_GLfloat,params)
|
2219
1628
|
}
|
2220
1629
|
|
2221
1630
|
static VALUE
|
@@ -2226,8 +1635,6 @@ VALUE obj,arg1,arg2;
|
|
2226
1635
|
GLenum pname;
|
2227
1636
|
GLint params[4] = {0,0,0,0};
|
2228
1637
|
int size;
|
2229
|
-
VALUE retary;
|
2230
|
-
int i;
|
2231
1638
|
target = (GLenum)NUM2INT(arg1);
|
2232
1639
|
pname = (GLenum)NUM2INT(arg2);
|
2233
1640
|
switch(pname) {
|
@@ -2242,10 +1649,7 @@ VALUE obj,arg1,arg2;
|
|
2242
1649
|
break;
|
2243
1650
|
}
|
2244
1651
|
glGetTexParameteriv(target,pname,params);
|
2245
|
-
|
2246
|
-
for(i=0;i<size;i++)
|
2247
|
-
rb_ary_push(retary, INT2NUM(params[i]));
|
2248
|
-
return retary;
|
1652
|
+
RET_ARRAY_OR_SINGLE_BOOL(size,cond_GLBOOL2RUBY,pname,params)
|
2249
1653
|
}
|
2250
1654
|
|
2251
1655
|
static VALUE
|
@@ -2256,14 +1660,12 @@ VALUE obj,arg1,arg2,arg3;
|
|
2256
1660
|
GLint level;
|
2257
1661
|
GLenum pname;
|
2258
1662
|
GLfloat params = 0.0;
|
2259
|
-
VALUE retary;
|
2260
1663
|
target = (GLenum)NUM2INT(arg1);
|
2261
1664
|
level = (GLint)NUM2INT(arg2);
|
2262
1665
|
pname = (GLenum)NUM2INT(arg3);
|
2263
1666
|
glGetTexLevelParameterfv(target,level,pname,¶ms);
|
2264
|
-
|
2265
|
-
|
2266
|
-
return retary;
|
1667
|
+
CHECK_GLERROR
|
1668
|
+
return RETCONV_GLfloat(params);
|
2267
1669
|
}
|
2268
1670
|
|
2269
1671
|
static VALUE
|
@@ -2274,45 +1676,23 @@ VALUE obj,arg1,arg2,arg3;
|
|
2274
1676
|
GLint level;
|
2275
1677
|
GLenum pname;
|
2276
1678
|
GLint params = 0;
|
2277
|
-
VALUE retary;
|
2278
1679
|
target = (GLenum)NUM2INT(arg1);
|
2279
1680
|
level = (GLint)NUM2INT(arg2);
|
2280
1681
|
pname = (GLenum)NUM2INT(arg3);
|
2281
1682
|
glGetTexLevelParameteriv(target,level,pname,¶ms);
|
2282
|
-
|
2283
|
-
|
2284
|
-
return retary;
|
1683
|
+
CHECK_GLERROR
|
1684
|
+
return cond_GLBOOL2RUBY(pname,params);
|
2285
1685
|
}
|
2286
1686
|
|
2287
|
-
static VALUE
|
2288
|
-
gl_IsEnabled(obj,arg1)
|
2289
|
-
VALUE obj,arg1;
|
2290
|
-
{
|
2291
|
-
GLenum cap;
|
2292
|
-
GLboolean ret;
|
2293
|
-
cap = (GLenum)NUM2INT(arg1);
|
2294
|
-
ret = glIsEnabled(cap);
|
2295
|
-
return INT2NUM(ret);
|
2296
|
-
}
|
2297
|
-
|
2298
|
-
static VALUE
|
2299
|
-
gl_IsList(obj,arg1)
|
2300
|
-
VALUE obj,arg1;
|
2301
|
-
{
|
2302
|
-
GLuint list;
|
2303
|
-
GLboolean ret;
|
2304
|
-
list = (GLuint)NUM2UINT(arg1);
|
2305
|
-
ret = glIsList(list);
|
2306
|
-
return INT2NUM(ret);
|
2307
|
-
}
|
2308
1687
|
|
2309
1688
|
static VALUE
|
2310
1689
|
gl_LoadMatrixf(obj,arg1)
|
2311
1690
|
VALUE obj,arg1;
|
2312
1691
|
{
|
2313
1692
|
GLfloat m[4*4];
|
2314
|
-
|
1693
|
+
ary2cmatfloat(arg1, m, 4, 4);
|
2315
1694
|
glLoadMatrixf(m);
|
1695
|
+
CHECK_GLERROR
|
2316
1696
|
return Qnil;
|
2317
1697
|
}
|
2318
1698
|
|
@@ -2321,8 +1701,9 @@ gl_LoadMatrixd(obj,arg1)
|
|
2321
1701
|
VALUE obj,arg1;
|
2322
1702
|
{
|
2323
1703
|
GLdouble m[4*4];
|
2324
|
-
|
1704
|
+
ary2cmatdouble(arg1, m, 4, 4);
|
2325
1705
|
glLoadMatrixd(m);
|
1706
|
+
CHECK_GLERROR
|
2326
1707
|
return Qnil;
|
2327
1708
|
}
|
2328
1709
|
|
@@ -2331,8 +1712,9 @@ gl_MultMatrixf(obj,arg1)
|
|
2331
1712
|
VALUE obj,arg1;
|
2332
1713
|
{
|
2333
1714
|
GLfloat m[4*4];
|
2334
|
-
|
1715
|
+
ary2cmatfloat(arg1, m, 4, 4);
|
2335
1716
|
glMultMatrixf(m);
|
1717
|
+
CHECK_GLERROR
|
2336
1718
|
return Qnil;
|
2337
1719
|
}
|
2338
1720
|
|
@@ -2341,8 +1723,9 @@ gl_MultMatrixd(obj,arg1)
|
|
2341
1723
|
VALUE obj,arg1;
|
2342
1724
|
{
|
2343
1725
|
GLdouble m[4*4];
|
2344
|
-
|
1726
|
+
ary2cmatdouble(arg1, m, 4, 4);
|
2345
1727
|
glMultMatrixd(m);
|
1728
|
+
CHECK_GLERROR
|
2346
1729
|
return Qnil;
|
2347
1730
|
}
|
2348
1731
|
|
@@ -2370,11 +1753,13 @@ VALUE obj, arg1, arg2, arg3, arg4; \
|
|
2370
1753
|
g_##_func_##_ptr = arg4; \
|
2371
1754
|
gl##_func_##Pointer(size, type, stride, (const GLvoid*)NUM2INT(arg4)); \
|
2372
1755
|
} else { \
|
2373
|
-
|
2374
|
-
|
2375
|
-
|
2376
|
-
|
1756
|
+
VALUE data; \
|
1757
|
+
data = pack_array_or_pass_string(type,arg4); \
|
1758
|
+
rb_str_freeze(data); \
|
1759
|
+
g_##_func_##_ptr = data; \
|
1760
|
+
gl##_func_##Pointer(size, type, stride, (const GLvoid*)RSTRING_PTR(data)); \
|
2377
1761
|
} \
|
1762
|
+
CHECK_GLERROR \
|
2378
1763
|
return Qnil; \
|
2379
1764
|
}
|
2380
1765
|
|
@@ -2384,20 +1769,6 @@ POINTER_FUNC(TexCoord)
|
|
2384
1769
|
|
2385
1770
|
#undef POINTER_FUNC
|
2386
1771
|
|
2387
|
-
static VALUE
|
2388
|
-
gl_DrawArrays(obj,arg1,arg2,arg3)
|
2389
|
-
VALUE obj,arg1,arg2,arg3;
|
2390
|
-
{
|
2391
|
-
GLenum mode;
|
2392
|
-
GLint first;
|
2393
|
-
GLsizei count;
|
2394
|
-
mode = (GLenum)NUM2INT(arg1);
|
2395
|
-
first = (GLint)NUM2INT(arg2);
|
2396
|
-
count = (GLsizei)NUM2UINT(arg3);
|
2397
|
-
glDrawArrays(mode,first,count);
|
2398
|
-
return Qnil;
|
2399
|
-
}
|
2400
|
-
|
2401
1772
|
static VALUE
|
2402
1773
|
gl_DrawElements(obj,arg1,arg2,arg3,arg4)
|
2403
1774
|
VALUE obj,arg1,arg2,arg3,arg4;
|
@@ -2411,9 +1782,11 @@ VALUE obj,arg1,arg2,arg3,arg4;
|
|
2411
1782
|
if (CheckBufferBinding(GL_ELEMENT_ARRAY_BUFFER_BINDING)) {
|
2412
1783
|
glDrawElements(mode, count, type, (const GLvoid*)NUM2INT(arg4));
|
2413
1784
|
} else {
|
2414
|
-
|
2415
|
-
|
1785
|
+
VALUE data;
|
1786
|
+
data = pack_array_or_pass_string(type,arg4);
|
1787
|
+
glDrawElements(mode, count, type, (const GLvoid*)RSTRING_PTR(data));
|
2416
1788
|
}
|
1789
|
+
CHECK_GLERROR
|
2417
1790
|
return Qnil;
|
2418
1791
|
}
|
2419
1792
|
|
@@ -2427,11 +1800,13 @@ VALUE obj,arg1,arg2;
|
|
2427
1800
|
g_EdgeFlag_ptr = arg2;
|
2428
1801
|
glEdgeFlagPointer(stride, (const GLboolean*) NUM2INT(arg2));
|
2429
1802
|
} else {
|
2430
|
-
|
2431
|
-
|
2432
|
-
|
2433
|
-
|
1803
|
+
VALUE data;
|
1804
|
+
data = pack_array_or_pass_string(GL_UNSIGNED_BYTE,arg2);
|
1805
|
+
rb_str_freeze(data);
|
1806
|
+
g_EdgeFlag_ptr = data;
|
1807
|
+
glEdgeFlagPointer(stride, (const GLboolean*)RSTRING_PTR(data));
|
2434
1808
|
}
|
1809
|
+
CHECK_GLERROR
|
2435
1810
|
return Qnil;
|
2436
1811
|
}
|
2437
1812
|
|
@@ -2481,11 +1856,12 @@ VALUE obj,arg1,arg2,arg3;
|
|
2481
1856
|
g_Index_ptr = arg3;
|
2482
1857
|
glIndexPointer(type, stride, (const GLvoid*)NUM2INT(arg3));
|
2483
1858
|
} else {
|
2484
|
-
|
2485
|
-
|
2486
|
-
g_Index_ptr =
|
2487
|
-
glIndexPointer(type, stride, (const GLvoid*)
|
1859
|
+
VALUE data;
|
1860
|
+
data = pack_array_or_pass_string(type,arg3);
|
1861
|
+
g_Index_ptr = data;
|
1862
|
+
glIndexPointer(type, stride, (const GLvoid*)RSTRING_PTR(data));
|
2488
1863
|
}
|
1864
|
+
CHECK_GLERROR
|
2489
1865
|
return Qnil;
|
2490
1866
|
}
|
2491
1867
|
|
@@ -2495,11 +1871,14 @@ VALUE obj,arg1,arg2,arg3;
|
|
2495
1871
|
{
|
2496
1872
|
GLenum format;
|
2497
1873
|
GLsizei stride;
|
1874
|
+
VALUE data;
|
2498
1875
|
format = (GLenum)NUM2INT(arg1);
|
2499
1876
|
stride = (GLsizei)NUM2UINT(arg2);
|
2500
|
-
|
2501
|
-
|
2502
|
-
|
1877
|
+
/* FIXME: add support for GL_C4UB_V2F,GL_C4UB_V3F, GL_T2F_C4UB_V3 */
|
1878
|
+
data = pack_array_or_pass_string(GL_FLOAT,arg3);
|
1879
|
+
rb_str_freeze(data);
|
1880
|
+
glInterleavedArrays(format, stride, (const GLvoid*)RSTRING_PTR(data));
|
1881
|
+
CHECK_GLERROR
|
2503
1882
|
return Qnil;
|
2504
1883
|
}
|
2505
1884
|
|
@@ -2515,105 +1894,16 @@ VALUE obj,arg1,arg2,arg3;
|
|
2515
1894
|
g_Normal_ptr = arg3;
|
2516
1895
|
glNormalPointer(type, stride, (const GLvoid*)NUM2INT(arg3));
|
2517
1896
|
} else {
|
2518
|
-
|
2519
|
-
|
2520
|
-
|
2521
|
-
|
1897
|
+
VALUE data;
|
1898
|
+
data = pack_array_or_pass_string(type,arg3);
|
1899
|
+
rb_str_freeze(data);
|
1900
|
+
g_Normal_ptr = data;
|
1901
|
+
glNormalPointer(type, stride, (const GLvoid*)RSTRING_PTR(data));
|
2522
1902
|
}
|
1903
|
+
CHECK_GLERROR
|
2523
1904
|
return Qnil;
|
2524
1905
|
}
|
2525
1906
|
|
2526
|
-
GL_SIMPLE_FUNC(PolygonOffset,2,GLfloat,NUM2DBL)
|
2527
|
-
|
2528
|
-
static VALUE
|
2529
|
-
gl_CopyTexImage1D(obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
2530
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
|
2531
|
-
{
|
2532
|
-
GLenum target;
|
2533
|
-
GLint level;
|
2534
|
-
GLenum internalformat;
|
2535
|
-
GLint x;
|
2536
|
-
GLint y;
|
2537
|
-
GLsizei width;
|
2538
|
-
GLint border;
|
2539
|
-
target = (GLenum)NUM2INT(arg1);
|
2540
|
-
level = (GLint)NUM2INT(arg2);
|
2541
|
-
internalformat = (GLenum)NUM2INT(arg3);
|
2542
|
-
x = (GLint)NUM2INT(arg4);
|
2543
|
-
y = (GLint)NUM2INT(arg5);
|
2544
|
-
width = (GLsizei)NUM2UINT(arg6);
|
2545
|
-
border = (GLint)NUM2INT(arg7);
|
2546
|
-
glCopyTexImage1D(target,level,internalformat,x,y,width,border);
|
2547
|
-
return Qnil;
|
2548
|
-
}
|
2549
|
-
|
2550
|
-
static VALUE
|
2551
|
-
gl_CopyTexImage2D(obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)
|
2552
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
|
2553
|
-
{
|
2554
|
-
GLenum target;
|
2555
|
-
GLint level;
|
2556
|
-
GLenum internalformat;
|
2557
|
-
GLint x;
|
2558
|
-
GLint y;
|
2559
|
-
GLsizei width;
|
2560
|
-
GLsizei height;
|
2561
|
-
GLint border;
|
2562
|
-
target = (GLenum)NUM2INT(arg1);
|
2563
|
-
level = (GLint)NUM2INT(arg2);
|
2564
|
-
internalformat = (GLenum)NUM2INT(arg3);
|
2565
|
-
x = (GLint)NUM2INT(arg4);
|
2566
|
-
y = (GLint)NUM2INT(arg5);
|
2567
|
-
width = (GLsizei)NUM2UINT(arg6);
|
2568
|
-
height = (GLsizei)NUM2UINT(arg7);
|
2569
|
-
border = (GLint)NUM2INT(arg8);
|
2570
|
-
glCopyTexImage2D(target,level,internalformat,x,y,width,height,border);
|
2571
|
-
return Qnil;
|
2572
|
-
}
|
2573
|
-
|
2574
|
-
static VALUE
|
2575
|
-
gl_CopyTexSubImage1D(obj,arg1,arg2,arg3,arg4,arg5,arg6)
|
2576
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6;
|
2577
|
-
{
|
2578
|
-
GLenum target;
|
2579
|
-
GLint level;
|
2580
|
-
GLint xoffset;
|
2581
|
-
GLint x;
|
2582
|
-
GLint y;
|
2583
|
-
GLsizei width;
|
2584
|
-
target = (GLenum)NUM2INT(arg1);
|
2585
|
-
level = (GLint)NUM2INT(arg2);
|
2586
|
-
xoffset = (GLint)NUM2INT(arg3);
|
2587
|
-
x = (GLint)NUM2INT(arg4);
|
2588
|
-
y = (GLint)NUM2INT(arg5);
|
2589
|
-
width = (GLsizei)NUM2UINT(arg6);
|
2590
|
-
glCopyTexSubImage1D(target,level,xoffset,x,y,width);
|
2591
|
-
return Qnil;
|
2592
|
-
}
|
2593
|
-
|
2594
|
-
static VALUE
|
2595
|
-
gl_CopyTexSubImage2D(obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)
|
2596
|
-
VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8;
|
2597
|
-
{
|
2598
|
-
GLenum target;
|
2599
|
-
GLint level;
|
2600
|
-
GLint xoffset;
|
2601
|
-
GLint yoffset;
|
2602
|
-
GLint x;
|
2603
|
-
GLint y;
|
2604
|
-
GLsizei width;
|
2605
|
-
GLsizei height;
|
2606
|
-
target = (GLenum)NUM2INT(arg1);
|
2607
|
-
level = (GLint)NUM2INT(arg2);
|
2608
|
-
xoffset = (GLint)NUM2INT(arg3);
|
2609
|
-
yoffset = (GLint)NUM2INT(arg4);
|
2610
|
-
x = (GLint)NUM2INT(arg5);
|
2611
|
-
y = (GLint)NUM2INT(arg6);
|
2612
|
-
width = (GLsizei)NUM2UINT(arg7);
|
2613
|
-
height = (GLsizei)NUM2UINT(arg8);
|
2614
|
-
glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
|
2615
|
-
return Qnil;
|
2616
|
-
}
|
2617
1907
|
|
2618
1908
|
static VALUE
|
2619
1909
|
gl_TexSubImage1D(obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7)
|
@@ -2625,6 +1915,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
|
|
2625
1915
|
GLsizei width;
|
2626
1916
|
GLenum format;
|
2627
1917
|
GLenum type;
|
1918
|
+
VALUE data;
|
2628
1919
|
target = (GLenum)NUM2INT(arg1);
|
2629
1920
|
level = (GLint)NUM2INT(arg2);
|
2630
1921
|
xoffset = (GLint)NUM2INT(arg3);
|
@@ -2634,13 +1925,15 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7;
|
|
2634
1925
|
|
2635
1926
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
2636
1927
|
glTexSubImage1D(target,level,xoffset,width,format,type,(GLvoid *)NUM2INT(arg7));
|
1928
|
+
CHECK_GLERROR
|
2637
1929
|
return Qnil;
|
2638
1930
|
}
|
2639
|
-
|
2640
|
-
Check_Type(arg7,T_STRING);
|
2641
|
-
CheckDataSize(type,format,width,arg7);
|
2642
1931
|
|
2643
|
-
|
1932
|
+
data = pack_array_or_pass_string(type,arg7);
|
1933
|
+
CheckDataSize(type,format,width,data);
|
1934
|
+
|
1935
|
+
glTexSubImage1D(target,level,xoffset,width,format,type,RSTRING_PTR(data));
|
1936
|
+
CHECK_GLERROR
|
2644
1937
|
return Qnil;
|
2645
1938
|
}
|
2646
1939
|
|
@@ -2656,6 +1949,7 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
|
|
2656
1949
|
GLsizei height;
|
2657
1950
|
GLenum format;
|
2658
1951
|
GLenum type;
|
1952
|
+
VALUE data;
|
2659
1953
|
target = (GLenum)NUM2INT(arg1);
|
2660
1954
|
level = (GLint)NUM2INT(arg2);
|
2661
1955
|
xoffset = (GLint)NUM2INT(arg3);
|
@@ -2667,13 +1961,15 @@ VALUE obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9;
|
|
2667
1961
|
|
2668
1962
|
if (CheckBufferBinding(GL_PIXEL_UNPACK_BUFFER_BINDING)) {
|
2669
1963
|
glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,(GLvoid *)NUM2INT(arg9));
|
1964
|
+
CHECK_GLERROR
|
2670
1965
|
return Qnil;
|
2671
1966
|
}
|
2672
|
-
|
2673
|
-
Check_Type(arg9,T_STRING);
|
2674
|
-
CheckDataSize(type,format,width*height,arg9);
|
2675
1967
|
|
2676
|
-
|
1968
|
+
data = pack_array_or_pass_string(type,arg9);
|
1969
|
+
CheckDataSize(type,format,width*height,data);
|
1970
|
+
|
1971
|
+
glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,RSTRING_PTR(data));
|
1972
|
+
CHECK_GLERROR
|
2677
1973
|
return Qnil;
|
2678
1974
|
}
|
2679
1975
|
|
@@ -2686,86 +1982,30 @@ VALUE obj,arg1;
|
|
2686
1982
|
GLsizei size;
|
2687
1983
|
GLboolean r;
|
2688
1984
|
VALUE retary;
|
1985
|
+
VALUE ary;
|
2689
1986
|
int i;
|
2690
|
-
|
2691
|
-
size = RARRAY(
|
1987
|
+
ary = rb_Array(arg1);
|
1988
|
+
size = RARRAY(ary)->len;
|
2692
1989
|
textures = ALLOC_N(GLuint,size);
|
2693
1990
|
residences = ALLOC_N(GLboolean,size);
|
2694
|
-
ary2cuint(
|
1991
|
+
ary2cuint(ary,textures,size);
|
2695
1992
|
r = glAreTexturesResident(size,textures,residences);
|
2696
1993
|
retary = rb_ary_new2(size);
|
2697
1994
|
if (r==GL_TRUE) { /* all are resident */
|
2698
1995
|
for(i=0;i<size;i++)
|
2699
|
-
rb_ary_push(retary,
|
1996
|
+
rb_ary_push(retary, GLBOOL2RUBY(GL_TRUE));
|
2700
1997
|
} else {
|
2701
1998
|
for(i=0;i<size;i++)
|
2702
|
-
rb_ary_push(retary,
|
1999
|
+
rb_ary_push(retary, GLBOOL2RUBY(residences[i]));
|
2703
2000
|
}
|
2704
2001
|
xfree(textures);
|
2705
2002
|
xfree(residences);
|
2003
|
+
CHECK_GLERROR
|
2706
2004
|
return retary;
|
2707
2005
|
}
|
2708
2006
|
|
2709
|
-
|
2710
|
-
|
2711
|
-
VALUE obj,arg1,arg2;
|
2712
|
-
{
|
2713
|
-
GLenum target;
|
2714
|
-
GLuint texture;
|
2715
|
-
target = (GLenum)NUM2INT(arg1);
|
2716
|
-
texture = (GLuint)NUM2UINT(arg2);
|
2717
|
-
glBindTexture(target,texture);
|
2718
|
-
return Qnil;
|
2719
|
-
}
|
2720
|
-
|
2721
|
-
static VALUE
|
2722
|
-
gl_DeleteTextures(obj,arg1)
|
2723
|
-
VALUE obj,arg1;
|
2724
|
-
{
|
2725
|
-
GLsizei n;
|
2726
|
-
GLuint *textures;
|
2727
|
-
if (TYPE(arg1)==T_ARRAY) {
|
2728
|
-
n = RARRAY(arg1)->len;
|
2729
|
-
textures = ALLOC_N(GLuint,n);
|
2730
|
-
ary2cuint(arg1,textures,n);
|
2731
|
-
glDeleteTextures( n, textures);
|
2732
|
-
xfree(textures);
|
2733
|
-
} else {
|
2734
|
-
GLuint texture;
|
2735
|
-
texture = NUM2INT(arg1);
|
2736
|
-
glDeleteTextures( 1, &texture);
|
2737
|
-
}
|
2738
|
-
return Qnil;
|
2739
|
-
}
|
2740
|
-
|
2741
|
-
static VALUE
|
2742
|
-
gl_GenTextures(obj,arg1)
|
2743
|
-
VALUE obj,arg1;
|
2744
|
-
{
|
2745
|
-
GLsizei n;
|
2746
|
-
GLuint *textures;
|
2747
|
-
RArray *ret;
|
2748
|
-
int i;
|
2749
|
-
n = (GLsizei)NUM2UINT(arg1);
|
2750
|
-
textures = ALLOC_N(GLuint, n);
|
2751
|
-
glGenTextures(n, textures);
|
2752
|
-
ret = RARRAY(rb_ary_new2(n));
|
2753
|
-
for (i = 0; i < n; i++)
|
2754
|
-
rb_ary_push((VALUE)ret, INT2NUM(textures[i]));
|
2755
|
-
xfree(textures);
|
2756
|
-
return (VALUE)ret;
|
2757
|
-
}
|
2758
|
-
|
2759
|
-
static VALUE
|
2760
|
-
gl_IsTexture(obj,arg1)
|
2761
|
-
VALUE obj,arg1;
|
2762
|
-
{
|
2763
|
-
GLuint texture;
|
2764
|
-
GLboolean ret;
|
2765
|
-
texture = (GLuint)NUM2UINT(arg1);
|
2766
|
-
ret = glIsTexture(texture);
|
2767
|
-
return INT2NUM(ret);
|
2768
|
-
}
|
2007
|
+
GL_FUNC_GENOBJECTS(GenTextures)
|
2008
|
+
GL_FUNC_DELETEOBJECTS(DeleteTextures)
|
2769
2009
|
|
2770
2010
|
static VALUE
|
2771
2011
|
gl_PrioritizeTextures(obj,arg1,arg2)
|
@@ -2785,6 +2025,7 @@ VALUE obj,arg1,arg2;
|
|
2785
2025
|
glPrioritizeTextures(size,textures,priorities);
|
2786
2026
|
xfree(textures);
|
2787
2027
|
xfree(priorities);
|
2028
|
+
CHECK_GLERROR
|
2788
2029
|
return Qnil;
|
2789
2030
|
}
|
2790
2031
|
|
@@ -2796,6 +2037,7 @@ VALUE obj,arg1;
|
|
2796
2037
|
Check_Type(arg1,T_ARRAY);
|
2797
2038
|
ary2cubyte(arg1,c,1);
|
2798
2039
|
glIndexubv(c);
|
2040
|
+
CHECK_GLERROR
|
2799
2041
|
return Qnil;
|
2800
2042
|
}
|
2801
2043
|
|
@@ -2824,7 +2066,7 @@ VALUE obj; \
|
|
2824
2066
|
gl_Color4##_type_(obj,ary->ptr[0],ary->ptr[1],ary->ptr[2],ary->ptr[3]); \
|
2825
2067
|
break; \
|
2826
2068
|
default: \
|
2827
|
-
rb_raise(rb_eArgError, "array length:%
|
2069
|
+
rb_raise(rb_eArgError, "array length:%li", ary->len); \
|
2828
2070
|
} \
|
2829
2071
|
} \
|
2830
2072
|
else \
|
@@ -2871,7 +2113,7 @@ VALUE obj; \
|
|
2871
2113
|
gl_Normal3##_type_(obj,ary->ptr[0], ary->ptr[1],ary->ptr[2]); \
|
2872
2114
|
break; \
|
2873
2115
|
default: \
|
2874
|
-
rb_raise(rb_eArgError, "array length:%
|
2116
|
+
rb_raise(rb_eArgError, "array length:%li", ary->len); \
|
2875
2117
|
} \
|
2876
2118
|
} \
|
2877
2119
|
else \
|
@@ -2965,7 +2207,7 @@ VALUE obj; \
|
|
2965
2207
|
gl_Rect##_type_(obj,ary->ptr[0],ary->ptr[1],ary2->ptr[0],ary2->ptr[1]); \
|
2966
2208
|
break; \
|
2967
2209
|
default: \
|
2968
|
-
rb_raise(rb_eArgError, "array length:%
|
2210
|
+
rb_raise(rb_eArgError, "array length:%li", ary->len); \
|
2969
2211
|
} \
|
2970
2212
|
} \
|
2971
2213
|
else \
|
@@ -3066,7 +2308,7 @@ VALUE obj; \
|
|
3066
2308
|
gl_Vertex4##_type_(obj,ary->ptr[0],ary->ptr[1],ary->ptr[2],ary->ptr[3]); \
|
3067
2309
|
break; \
|
3068
2310
|
default: \
|
3069
|
-
rb_raise(rb_eRuntimeError, "glVertex vertex num error!:%
|
2311
|
+
rb_raise(rb_eRuntimeError, "glVertex vertex num error!:%li", ary->len); \
|
3070
2312
|
} \
|
3071
2313
|
} \
|
3072
2314
|
else \
|
@@ -3190,7 +2432,7 @@ void gl_init_functions_1_0__1_1(VALUE module)
|
|
3190
2432
|
rb_define_module_function(module, "glNewList", gl_NewList, 2);
|
3191
2433
|
rb_define_module_function(module, "glEndList", gl_EndList, 0);
|
3192
2434
|
rb_define_module_function(module, "glCallList", gl_CallList, 1);
|
3193
|
-
rb_define_module_function(module, "glCallLists", gl_CallLists,
|
2435
|
+
rb_define_module_function(module, "glCallLists", gl_CallLists, 2);
|
3194
2436
|
rb_define_module_function(module, "glDeleteLists", gl_DeleteLists, 2);
|
3195
2437
|
rb_define_module_function(module, "glGenLists", gl_GenLists, 1);
|
3196
2438
|
rb_define_module_function(module, "glListBase", gl_ListBase, 1);
|