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
data/test/tc_ext_arb.rb
CHANGED
@@ -50,16 +50,36 @@ class Test_EXT_ARB < Test::Unit::TestCase
|
|
50
50
|
glLoadIdentity()
|
51
51
|
glMultTransposeMatrixdARB(m_b)
|
52
52
|
assert_equal(glGetDoublev(GL_TRANSPOSE_MODELVIEW_MATRIX_ARB), m_b)
|
53
|
+
|
54
|
+
# 2
|
55
|
+
m = Matrix.rows([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
|
56
|
+
glMatrixMode(GL_MODELVIEW)
|
57
|
+
glLoadTransposeMatrixfARB(m)
|
58
|
+
assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
|
59
|
+
glLoadIdentity()
|
60
|
+
glLoadTransposeMatrixdARB(m)
|
61
|
+
assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
|
62
|
+
glLoadIdentity()
|
63
|
+
glMultTransposeMatrixfARB(m)
|
64
|
+
assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
|
65
|
+
glLoadIdentity()
|
66
|
+
glMultTransposeMatrixdARB(m)
|
67
|
+
assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
|
68
|
+
|
69
|
+
assert_raise ArgumentError do glLoadTransposeMatrixfARB([1,2,3,4]) end
|
70
|
+
assert_raise ArgumentError do glLoadTransposeMatrixdARB([1,2,3,4]) end
|
71
|
+
assert_raise ArgumentError do glMultTransposeMatrixfARB([1,2,3,4]) end
|
72
|
+
assert_raise ArgumentError do glMultTransposeMatrixdARB([1,2,3,4]) end
|
53
73
|
end
|
54
74
|
|
55
75
|
def test_gl_arb_multisample
|
56
76
|
return if not supported?("GL_ARB_multisample")
|
57
77
|
glSampleCoverageARB(0.5,GL_FALSE)
|
58
78
|
assert_equal(glGetFloatv(GL_SAMPLE_COVERAGE_VALUE_ARB),0.5)
|
59
|
-
assert_equal(glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT_ARB),
|
79
|
+
assert_equal(glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT_ARB),false)
|
60
80
|
glSampleCoverageARB(1.0,GL_TRUE)
|
61
81
|
assert_equal(glGetFloatv(GL_SAMPLE_COVERAGE_VALUE_ARB),1.0)
|
62
|
-
assert_equal(glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT_ARB),
|
82
|
+
assert_equal(glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT_ARB),true)
|
63
83
|
end
|
64
84
|
|
65
85
|
def test_gl_arb_color_buffer_float
|
@@ -68,6 +88,380 @@ class Test_EXT_ARB < Test::Unit::TestCase
|
|
68
88
|
assert_equal(glGetIntegerv(GL_CLAMP_VERTEX_COLOR_ARB),GL_FIXED_ONLY_ARB)
|
69
89
|
|
70
90
|
glClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB,GL_TRUE)
|
71
|
-
assert_equal(
|
91
|
+
assert_equal(glGetBooleanv(GL_CLAMP_VERTEX_COLOR_ARB),GL_TRUE)
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_gl_arb_vertex_program
|
95
|
+
return if not supported?("GL_ARB_vertex_program")
|
96
|
+
|
97
|
+
assert_equal(glIsProgramARB(0),false)
|
98
|
+
programs = glGenProgramsARB(1)
|
99
|
+
assert_equal(programs.size,1)
|
100
|
+
|
101
|
+
program = "!!ARBvp1.0\nTEMP vv;\nEND"
|
102
|
+
|
103
|
+
glBindProgramARB(GL_VERTEX_PROGRAM_ARB, programs[0])
|
104
|
+
glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, program)
|
105
|
+
assert_equal(glGetProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_STRING_ARB), program)
|
106
|
+
assert_equal(glIsProgramARB(programs[0]),true)
|
107
|
+
|
108
|
+
assert_equal(glGetProgramivARB(GL_VERTEX_PROGRAM_ARB,GL_PROGRAM_LENGTH_ARB),program.size)
|
109
|
+
assert_equal(glGetProgramivARB(GL_VERTEX_PROGRAM_ARB,GL_PROGRAM_BINDING_ARB),programs[0])
|
110
|
+
|
111
|
+
glEnableVertexAttribArrayARB(1)
|
112
|
+
assert_equal(glGetVertexAttribivARB(1,GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB),GL_TRUE)
|
113
|
+
glDisableVertexAttribArrayARB(1)
|
114
|
+
assert_equal(glGetVertexAttribivARB(1,GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB),GL_FALSE)
|
115
|
+
|
116
|
+
glVertexAttribPointerARB(1,2,GL_FLOAT,GL_FALSE,0,[1,1].pack("f*"))
|
117
|
+
assert_equal(glGetVertexAttribPointervARB(1),[1,1].pack("f*"))
|
118
|
+
|
119
|
+
|
120
|
+
glProgramEnvParameter4dARB(GL_VERTEX_PROGRAM_ARB,1, 1,2,3,4)
|
121
|
+
assert_equal(glGetProgramEnvParameterdvARB(GL_VERTEX_PROGRAM_ARB,1),[1,2,3,4])
|
122
|
+
glProgramEnvParameter4fARB(GL_VERTEX_PROGRAM_ARB,1, 5,6,7,8)
|
123
|
+
assert_equal(glGetProgramEnvParameterfvARB(GL_VERTEX_PROGRAM_ARB,1),[5,6,7,8])
|
124
|
+
glProgramEnvParameter4dvARB(GL_VERTEX_PROGRAM_ARB,1, [1,2,3,4])
|
125
|
+
assert_equal(glGetProgramEnvParameterdvARB(GL_VERTEX_PROGRAM_ARB,1),[1,2,3,4])
|
126
|
+
glProgramEnvParameter4fvARB(GL_VERTEX_PROGRAM_ARB,1, [5,6,7,8])
|
127
|
+
assert_equal(glGetProgramEnvParameterfvARB(GL_VERTEX_PROGRAM_ARB,1),[5,6,7,8])
|
128
|
+
|
129
|
+
glProgramLocalParameter4dARB(GL_VERTEX_PROGRAM_ARB,1, 1,2,3,4)
|
130
|
+
assert_equal(glGetProgramLocalParameterdvARB(GL_VERTEX_PROGRAM_ARB,1),[1,2,3,4])
|
131
|
+
glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB,1, 5,6,7,8)
|
132
|
+
assert_equal(glGetProgramLocalParameterfvARB(GL_VERTEX_PROGRAM_ARB,1),[5,6,7,8])
|
133
|
+
glProgramLocalParameter4dvARB(GL_VERTEX_PROGRAM_ARB,1, [1,2,3,4])
|
134
|
+
assert_equal(glGetProgramLocalParameterdvARB(GL_VERTEX_PROGRAM_ARB,1),[1,2,3,4])
|
135
|
+
glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB,1, [5,6,7,8])
|
136
|
+
assert_equal(glGetProgramLocalParameterfvARB(GL_VERTEX_PROGRAM_ARB,1),[5,6,7,8])
|
137
|
+
|
138
|
+
glVertexAttrib1dARB(1,1)
|
139
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0],1)
|
140
|
+
glVertexAttrib1fARB(1,2)
|
141
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0],2)
|
142
|
+
glVertexAttrib1sARB(1,3)
|
143
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0],3)
|
144
|
+
glVertexAttrib1dvARB(1,[1])
|
145
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0],1)
|
146
|
+
glVertexAttrib1fvARB(1,[2])
|
147
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0],2)
|
148
|
+
glVertexAttrib1svARB(1,[3])
|
149
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0],3)
|
150
|
+
|
151
|
+
glVertexAttrib2dARB(1,1,2)
|
152
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,2],[1,2])
|
153
|
+
glVertexAttrib2fARB(1,2,3)
|
154
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,2],[2,3])
|
155
|
+
glVertexAttrib2sARB(1,3,4)
|
156
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,2],[3,4])
|
157
|
+
glVertexAttrib2dvARB(1,[1,2])
|
158
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,2],[1,2])
|
159
|
+
glVertexAttrib2fvARB(1,[2,3])
|
160
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,2],[2,3])
|
161
|
+
glVertexAttrib2svARB(1,[3,4])
|
162
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,2],[3,4])
|
163
|
+
|
164
|
+
glVertexAttrib3dARB(1,1,2,3)
|
165
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,3],[1,2,3])
|
166
|
+
glVertexAttrib3fARB(1,2,3,4)
|
167
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,3],[2,3,4])
|
168
|
+
glVertexAttrib3sARB(1,3,4,5)
|
169
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,3],[3,4,5])
|
170
|
+
glVertexAttrib3dvARB(1,[1,2,3])
|
171
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,3],[1,2,3])
|
172
|
+
glVertexAttrib3fvARB(1,[2,3,4])
|
173
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,3],[2,3,4])
|
174
|
+
glVertexAttrib3svARB(1,[3,4,5])
|
175
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,3],[3,4,5])
|
176
|
+
|
177
|
+
glVertexAttrib4dARB(1,1,2,3,4)
|
178
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,2,3,4])
|
179
|
+
glVertexAttrib4fARB(1,2,3,4,5)
|
180
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[2,3,4,5])
|
181
|
+
glVertexAttrib4sARB(1,3,4,5,6)
|
182
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[3,4,5,6])
|
183
|
+
glVertexAttrib4dvARB(1,[1,2,3,4])
|
184
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,2,3,4])
|
185
|
+
glVertexAttrib4fvARB(1,[2,3,4,5])
|
186
|
+
assert_equal(glGetVertexAttribfvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[2,3,4,5])
|
187
|
+
glVertexAttrib4svARB(1,[3,4,5,6])
|
188
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[3,4,5,6])
|
189
|
+
|
190
|
+
|
191
|
+
glVertexAttrib4bvARB(1,[1,2,3,4])
|
192
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,2,3,4])
|
193
|
+
glVertexAttrib4ivARB(1,[2,3,4,5])
|
194
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[2,3,4,5])
|
195
|
+
glVertexAttrib4ubvARB(1,[3,4,5,6])
|
196
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[3,4,5,6])
|
197
|
+
glVertexAttrib4uivARB(1,[1,2,3,4])
|
198
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,2,3,4])
|
199
|
+
glVertexAttrib4usvARB(1,[2,3,4,5])
|
200
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[2,3,4,5])
|
201
|
+
|
202
|
+
glVertexAttrib4NbvARB(1,[0,2**7-1,0,2**7-1])
|
203
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[0,1,0,1])
|
204
|
+
glVertexAttrib4NivARB(1,[2**31-1,0,2**31-1,0])
|
205
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,0,1,0])
|
206
|
+
glVertexAttrib4NsvARB(1,[0,2**15-1,0,2**15-1])
|
207
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[0,1,0,1])
|
208
|
+
|
209
|
+
glVertexAttrib4NubARB(1,2**8-1,0,2**8-1,0)
|
210
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,0,1,0])
|
211
|
+
|
212
|
+
glVertexAttrib4NubvARB(1,[0,2**8-1,0,2**8-1])
|
213
|
+
assert_equal(glGetVertexAttribdvARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[0,1,0,1])
|
214
|
+
glVertexAttrib4NuivARB(1,[2**32-1,0,2**32-1,0])
|
215
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[1,0,1,0])
|
216
|
+
glVertexAttrib4NusvARB(1,[0,2**16-1,0,2**16-1])
|
217
|
+
assert_equal(glGetVertexAttribivARB(1,GL_CURRENT_VERTEX_ATTRIB_ARB)[0,4],[0,1,0,1])
|
218
|
+
|
219
|
+
glDeleteProgramsARB(programs)
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_gl_arb_windowpos
|
223
|
+
return if not supported?("GL_ARB_window_pos")
|
224
|
+
# 2
|
225
|
+
glWindowPos2dARB(1.0,2.0)
|
226
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0,1])
|
227
|
+
glWindowPos2dvARB([2.0,1.0])
|
228
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[2,1,0,1])
|
229
|
+
glWindowPos2fARB(1.0,2.0)
|
230
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0,1])
|
231
|
+
glWindowPos2fvARB([2.0,1.0])
|
232
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[2,1,0,1])
|
233
|
+
glWindowPos2iARB(1,2)
|
234
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0,1])
|
235
|
+
glWindowPos2ivARB([2,1])
|
236
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[2,1,0,1])
|
237
|
+
glWindowPos2sARB(1,2)
|
238
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0,1])
|
239
|
+
glWindowPos2svARB([2,1])
|
240
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[2,1,0,1])
|
241
|
+
|
242
|
+
# 3
|
243
|
+
glWindowPos3dARB(1.0,2.0,0.5)
|
244
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0.5,1])
|
245
|
+
glWindowPos3dvARB([3.0,2.0,1.0])
|
246
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[3,2,1,1])
|
247
|
+
glWindowPos3fARB(1.0,2.0,0.5)
|
248
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0.5,1])
|
249
|
+
glWindowPos3fvARB([3.0,2.0,1.0])
|
250
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[3,2,1,1])
|
251
|
+
glWindowPos3iARB(1,2,0)
|
252
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0,1])
|
253
|
+
glWindowPos3ivARB([3,2,1])
|
254
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[3,2,1,1])
|
255
|
+
glWindowPos3sARB(1,2,0)
|
256
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[1,2,0,1])
|
257
|
+
glWindowPos3svARB([3,2,1])
|
258
|
+
assert_equal(glGetDoublev(GL_CURRENT_RASTER_POSITION),[3,2,1,1])
|
259
|
+
end
|
260
|
+
|
261
|
+
def test_gl_arb_pointparameter
|
262
|
+
return if not supported?("GL_ARB_point_parameters")
|
263
|
+
glPointParameterfARB(GL_POINT_SIZE_MIN,1.0)
|
264
|
+
assert_equal(glGetDoublev(GL_POINT_SIZE_MIN),1.0)
|
265
|
+
|
266
|
+
glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION,[1,0,1])
|
267
|
+
assert_equal(glGetDoublev(GL_POINT_DISTANCE_ATTENUATION),[1,0,1])
|
268
|
+
end
|
269
|
+
|
270
|
+
def test_gl_arb_occlusion_query
|
271
|
+
return if not supported?("GL_ARB_occlusion_query")
|
272
|
+
|
273
|
+
queries = glGenQueriesARB(2)
|
274
|
+
assert_equal(queries.size,2)
|
275
|
+
|
276
|
+
glBeginQueryARB(GL_SAMPLES_PASSED,queries[1])
|
277
|
+
assert_equal(glIsQueryARB(queries[1]),true)
|
278
|
+
|
279
|
+
glEndQueryARB(GL_SAMPLES_PASSED)
|
280
|
+
r = glGetQueryObjectivARB(queries[1],GL_QUERY_RESULT_AVAILABLE)
|
281
|
+
assert(r==GL_TRUE || r==GL_FALSE)
|
282
|
+
assert(glGetQueryObjectuivARB(queries[1],GL_QUERY_RESULT)>=0)
|
283
|
+
|
284
|
+
glDeleteQueriesARB(queries)
|
285
|
+
assert_equal(glIsQueryARB(queries[1]),false)
|
286
|
+
end
|
287
|
+
|
288
|
+
def test_gl_arb_shader_objects
|
289
|
+
return if not supported?("GL_ARB_shader_objects")
|
290
|
+
|
291
|
+
vertex_shader_source = "void main() { gl_Position = ftransform();}"
|
292
|
+
|
293
|
+
program = glCreateProgramObjectARB()
|
294
|
+
|
295
|
+
vs = glCreateShaderObjectARB(GL_VERTEX_SHADER)
|
296
|
+
|
297
|
+
glShaderSourceARB(vs,vertex_shader_source)
|
298
|
+
assert_equal(glGetShaderSourceARB(vs),vertex_shader_source)
|
299
|
+
|
300
|
+
assert_equal(glGetObjectParameterivARB(vs,GL_OBJECT_TYPE_ARB),GL_SHADER_OBJECT_ARB)
|
301
|
+
assert_equal(glGetObjectParameterfvARB(vs,GL_OBJECT_TYPE_ARB),GL_SHADER_OBJECT_ARB)
|
302
|
+
assert_equal(glGetObjectParameterfvARB(vs,GL_OBJECT_SUBTYPE_ARB),GL_VERTEX_SHADER)
|
303
|
+
glCompileShaderARB(vs)
|
304
|
+
assert_equal(glGetObjectParameterivARB(vs,GL_OBJECT_COMPILE_STATUS_ARB),GL_TRUE)
|
305
|
+
|
306
|
+
vslog = glGetInfoLogARB(vs)
|
307
|
+
assert_equal(vslog.class,String)
|
308
|
+
|
309
|
+
glAttachObjectARB(program,vs)
|
310
|
+
assert_equal(glGetAttachedObjectsARB(program),vs)
|
311
|
+
|
312
|
+
glValidateProgramARB(program)
|
313
|
+
assert_equal(glGetObjectParameterivARB(program,GL_OBJECT_VALIDATE_STATUS_ARB),GL_TRUE)
|
314
|
+
|
315
|
+
glLinkProgramARB(program)
|
316
|
+
assert_equal(glGetObjectParameterivARB(program,GL_OBJECT_LINK_STATUS_ARB),GL_TRUE)
|
317
|
+
|
318
|
+
glUseProgramObjectARB(program)
|
319
|
+
assert_equal(glGetIntegerv(GL_CURRENT_PROGRAM),program)
|
320
|
+
|
321
|
+
assert_equal(glGetHandleARB(GL_PROGRAM_OBJECT_ARB),program)
|
322
|
+
|
323
|
+
glUseProgramObjectARB(0)
|
324
|
+
|
325
|
+
glDetachObjectARB(program,vs)
|
326
|
+
|
327
|
+
glDeleteObjectARB(vs)
|
328
|
+
glDeleteObjectARB(program)
|
329
|
+
end
|
330
|
+
|
331
|
+
def test_gl_arb_shader_objects_2
|
332
|
+
return if not supported?("GL_ARB_shader_objects")
|
333
|
+
|
334
|
+
vertex_shader_source = "attribute vec4 test; uniform float testvec1; uniform vec2 testvec2; uniform vec3 testvec3; uniform vec4 testvec4; uniform int testivec1; uniform ivec2 testivec2; uniform ivec3 testivec3; uniform ivec4 testivec4; void main() { gl_Position = testvec1 * test * testvec2.x * testvec3.x * testivec1 * testivec2.x * testivec3.x * testivec4.x + testvec4;}"
|
335
|
+
|
336
|
+
program = glCreateProgramObjectARB()
|
337
|
+
vs = glCreateShaderObjectARB(GL_VERTEX_SHADER)
|
338
|
+
glShaderSourceARB(vs,vertex_shader_source)
|
339
|
+
|
340
|
+
glCompileShaderARB(vs)
|
341
|
+
assert_equal(glGetObjectParameterivARB(vs,GL_OBJECT_COMPILE_STATUS_ARB),GL_TRUE)
|
342
|
+
|
343
|
+
glAttachObjectARB(program,vs)
|
344
|
+
|
345
|
+
glLinkProgramARB(program)
|
346
|
+
assert_equal(glGetObjectParameterivARB(program,GL_OBJECT_LINK_STATUS_ARB),GL_TRUE)
|
347
|
+
|
348
|
+
glUseProgramObjectARB(program)
|
349
|
+
|
350
|
+
assert((tv1l = glGetUniformLocationARB(program,"testvec1"))>=0)
|
351
|
+
assert((tv2l = glGetUniformLocationARB(program,"testvec2"))>=0)
|
352
|
+
assert((tv3l = glGetUniformLocationARB(program,"testvec3"))>=0)
|
353
|
+
assert((tv4l = glGetUniformLocationARB(program,"testvec4"))>=0)
|
354
|
+
assert((tv1il = glGetUniformLocationARB(program,"testivec1"))>=0)
|
355
|
+
assert((tv2il = glGetUniformLocationARB(program,"testivec2"))>=0)
|
356
|
+
assert((tv3il = glGetUniformLocationARB(program,"testivec3"))>=0)
|
357
|
+
assert((tv4il = glGetUniformLocationARB(program,"testivec4"))>=0)
|
358
|
+
|
359
|
+
##
|
360
|
+
|
361
|
+
assert_equal(glGetActiveUniformARB(program,tv1il),[1,GL_INT,"testivec1"])
|
362
|
+
|
363
|
+
## f
|
364
|
+
glUniform1fARB(tv1l,2.0)
|
365
|
+
assert_equal(glGetUniformfvARB(program,tv1l),2.0)
|
366
|
+
glUniform2fARB(tv2l,2.0,2.0)
|
367
|
+
assert_equal(glGetUniformfvARB(program,tv2l),[2.0,2.0])
|
368
|
+
glUniform3fARB(tv3l,2.0,2.0,2.0)
|
369
|
+
assert_equal(glGetUniformfvARB(program,tv3l),[2.0,2.0,2.0])
|
370
|
+
glUniform4fARB(tv4l,2.0,2.0,2.0,2.0)
|
371
|
+
assert_equal(glGetUniformfvARB(program,tv4l),[2.0,2.0,2.0,2.0])
|
372
|
+
# i
|
373
|
+
glUniform1iARB(tv1il,3)
|
374
|
+
assert_equal(glGetUniformivARB(program,tv1il),3)
|
375
|
+
glUniform2iARB(tv2il,3,3)
|
376
|
+
assert_equal(glGetUniformivARB(program,tv2il),[3,3])
|
377
|
+
glUniform3iARB(tv3il,3,3,3)
|
378
|
+
assert_equal(glGetUniformivARB(program,tv3il),[3,3,3])
|
379
|
+
glUniform4iARB(tv4il,3,3,3,3)
|
380
|
+
assert_equal(glGetUniformivARB(program,tv4il),[3,3,3,3])
|
381
|
+
# fv
|
382
|
+
glUniform1fvARB(tv1l,[3.0])
|
383
|
+
assert_equal(glGetUniformfvARB(program,tv1l),3.0)
|
384
|
+
glUniform2fvARB(tv2l,[3.0,3.0])
|
385
|
+
assert_equal(glGetUniformfvARB(program,tv2l),[3.0,3.0])
|
386
|
+
glUniform3fvARB(tv3l,[3.0,3.0,3.0])
|
387
|
+
assert_equal(glGetUniformfvARB(program,tv3l),[3.0,3.0,3.0])
|
388
|
+
glUniform4fvARB(tv4l,[3.0,3.0,3.0,3.0])
|
389
|
+
assert_equal(glGetUniformfvARB(program,tv4l),[3.0,3.0,3.0,3.0])
|
390
|
+
# iv
|
391
|
+
glUniform1ivARB(tv1il,[2])
|
392
|
+
assert_equal(glGetUniformivARB(program,tv1il),2)
|
393
|
+
glUniform2ivARB(tv2il,[2,2])
|
394
|
+
assert_equal(glGetUniformivARB(program,tv2il),[2,2])
|
395
|
+
glUniform3ivARB(tv3il,[2,2,2])
|
396
|
+
assert_equal(glGetUniformivARB(program,tv3il),[2,2,2])
|
397
|
+
glUniform4ivARB(tv4il,[2,2,2,2])
|
398
|
+
assert_equal(glGetUniformivARB(program,tv4il),[2,2,2,2])
|
399
|
+
|
400
|
+
glDeleteObjectARB(vs)
|
401
|
+
glDeleteObjectARB(program)
|
402
|
+
end
|
403
|
+
|
404
|
+
def test_gl_arb_shader_objects_3
|
405
|
+
return if not supported?("GL_ARB_shader_objects")
|
406
|
+
|
407
|
+
vertex_shader_source = "uniform mat2 testmat2; uniform mat3 testmat3; uniform mat4 testmat4; void main() { gl_Position = gl_Vertex * testmat4[0].x * testmat3[0].x * testmat2[0].x;}"
|
408
|
+
|
409
|
+
program = glCreateProgramObjectARB()
|
410
|
+
vs = glCreateShaderObjectARB(GL_VERTEX_SHADER)
|
411
|
+
glShaderSourceARB(vs,vertex_shader_source)
|
412
|
+
|
413
|
+
glCompileShaderARB(vs)
|
414
|
+
assert_equal(glGetObjectParameterivARB(vs,GL_OBJECT_COMPILE_STATUS_ARB),GL_TRUE)
|
415
|
+
|
416
|
+
glAttachObjectARB(program,vs)
|
417
|
+
|
418
|
+
glLinkProgramARB(program)
|
419
|
+
assert_equal(glGetObjectParameterivARB(program,GL_OBJECT_LINK_STATUS_ARB),GL_TRUE)
|
420
|
+
|
421
|
+
glUseProgramObjectARB(program)
|
422
|
+
#
|
423
|
+
assert((tm2l = glGetUniformLocationARB(program,"testmat2"))>=0)
|
424
|
+
assert((tm3l = glGetUniformLocationARB(program,"testmat3"))>=0)
|
425
|
+
assert((tm4l = glGetUniformLocationARB(program,"testmat4"))>=0)
|
426
|
+
|
427
|
+
glUniformMatrix2fvARB(tm2l, GL_TRUE, [0,1, 1,0])
|
428
|
+
assert_equal(glGetUniformfvARB(program,tm2l),[0,1,1,0])
|
429
|
+
|
430
|
+
glUniformMatrix3fvARB(tm3l, GL_TRUE, [0,1,0, 1,0,1, 0,1,0])
|
431
|
+
assert_equal(glGetUniformfvARB(program,tm3l),[0,1,0, 1,0,1, 0,1,0])
|
432
|
+
|
433
|
+
glUniformMatrix4fvARB(tm4l, GL_TRUE, [0,1,0,1, 1,0,1,0, 0,1,0,1, 1,0,1,0])
|
434
|
+
assert_equal(glGetUniformfvARB(program,tm4l),[0,1,0,1, 1,0,1,0, 0,1,0,1, 1,0,1,0])
|
435
|
+
|
436
|
+
glDeleteObjectARB(vs)
|
437
|
+
glDeleteObjectARB(program)
|
438
|
+
end
|
439
|
+
|
440
|
+
def test_gl_arb_vertex_shader
|
441
|
+
return if not supported?("GL_ARB_vertex_shader")
|
442
|
+
|
443
|
+
vertex_shader_source = "attribute vec4 test; uniform float testvec1; uniform vec2 testvec2; uniform vec3 testvec3; uniform vec4 testvec4; uniform int testivec1; uniform ivec2 testivec2; uniform ivec3 testivec3; uniform ivec4 testivec4; void main() { gl_Position = testvec1 * test * testvec2.x * testvec3.x * testivec1 * testivec2.x * testivec3.x * testivec4.x + testvec4;}"
|
444
|
+
|
445
|
+
program = glCreateProgramObjectARB()
|
446
|
+
vs = glCreateShaderObjectARB(GL_VERTEX_SHADER)
|
447
|
+
glShaderSourceARB(vs,vertex_shader_source)
|
448
|
+
|
449
|
+
glCompileShaderARB(vs)
|
450
|
+
assert_equal(glGetObjectParameterivARB(vs,GL_OBJECT_COMPILE_STATUS_ARB),GL_TRUE)
|
451
|
+
|
452
|
+
glAttachObjectARB(program,vs)
|
453
|
+
|
454
|
+
glBindAttribLocationARB(program,2,"test")
|
455
|
+
|
456
|
+
glLinkProgramARB(program)
|
457
|
+
assert_equal(glGetObjectParameterivARB(program,GL_OBJECT_LINK_STATUS_ARB),GL_TRUE)
|
458
|
+
|
459
|
+
glUseProgramObjectARB(program)
|
460
|
+
|
461
|
+
assert_equal(glGetAttribLocationARB(program,"test"),2)
|
462
|
+
assert_equal(glGetActiveAttribARB(program,0),[1,GL_FLOAT_VEC4,"test"])
|
463
|
+
|
464
|
+
glDeleteObjectARB(vs)
|
465
|
+
glDeleteObjectARB(program)
|
72
466
|
end
|
73
467
|
end
|
data/test/tc_ext_ati.rb
ADDED
@@ -0,0 +1,33 @@
|
|
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
|
+
require 'test/unit'
|
17
|
+
|
18
|
+
class Test_EXT_ATI < Test::Unit::TestCase
|
19
|
+
def setup
|
20
|
+
common_setup()
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
common_teardown()
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_gl_ati_draw_buffers
|
28
|
+
return if not supported?("GL_ATI_draw_buffers")
|
29
|
+
glDrawBuffersATI([GL_BACK_LEFT,GL_FRONT_LEFT])
|
30
|
+
assert_equal(glGetIntegerv(GL_DRAW_BUFFER0),GL_BACK_LEFT)
|
31
|
+
assert_equal(glGetIntegerv(GL_DRAW_BUFFER1),GL_FRONT_LEFT)
|
32
|
+
end
|
33
|
+
end
|