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.
Files changed (118) hide show
  1. data/Rakefile +15 -11
  2. data/doc/build_install.txt +10 -6
  3. data/doc/extensions.txt.in +348 -0
  4. data/doc/history.txt +4 -0
  5. data/doc/roadmap.txt +4 -6
  6. data/doc/scientific_use.txt +7 -0
  7. data/doc/supplies/page_template.html +2 -1
  8. data/doc/thanks.txt +5 -0
  9. data/doc/tutorial.txt +431 -121
  10. data/examples/NeHe/nehe_lesson02.rb +1 -1
  11. data/examples/NeHe/nehe_lesson03.rb +1 -1
  12. data/examples/NeHe/nehe_lesson04.rb +1 -1
  13. data/examples/NeHe/nehe_lesson05.rb +1 -1
  14. data/examples/NeHe/nehe_lesson36.rb +1 -1
  15. data/examples/OrangeBook/brick.rb +3 -15
  16. data/examples/OrangeBook/particle.rb +2 -20
  17. data/examples/RedBook/aapoly.rb +1 -1
  18. data/examples/RedBook/aargb.rb +2 -2
  19. data/examples/RedBook/accanti.rb +1 -1
  20. data/examples/RedBook/accpersp.rb +1 -1
  21. data/examples/RedBook/alpha.rb +2 -2
  22. data/examples/RedBook/alpha3D.rb +1 -1
  23. data/examples/RedBook/bezcurve.rb +1 -1
  24. data/examples/RedBook/bezmesh.rb +1 -1
  25. data/examples/RedBook/checker.rb +1 -1
  26. data/examples/RedBook/clip.rb +1 -1
  27. data/examples/RedBook/colormat.rb +1 -1
  28. data/examples/RedBook/cube.rb +1 -1
  29. data/examples/RedBook/depthcue.rb +1 -1
  30. data/examples/RedBook/dof.rb +1 -1
  31. data/examples/RedBook/double.rb +1 -1
  32. data/examples/RedBook/drawf.rb +1 -1
  33. data/examples/RedBook/feedback.rb +1 -1
  34. data/examples/RedBook/fog.rb +1 -1
  35. data/examples/RedBook/font.rb +2 -2
  36. data/examples/RedBook/hello.rb +1 -1
  37. data/examples/RedBook/image.rb +4 -4
  38. data/examples/RedBook/lines.rb +1 -1
  39. data/examples/RedBook/list.rb +1 -1
  40. data/examples/RedBook/material.rb +1 -1
  41. data/examples/RedBook/mipmap.rb +1 -1
  42. data/examples/RedBook/model.rb +1 -1
  43. data/examples/RedBook/movelight.rb +1 -1
  44. data/examples/RedBook/pickdepth.rb +1 -1
  45. data/examples/RedBook/planet.rb +5 -5
  46. data/examples/RedBook/quadric.rb +1 -1
  47. data/examples/RedBook/robot.rb +5 -5
  48. data/examples/RedBook/select.rb +1 -1
  49. data/examples/RedBook/smooth.rb +1 -1
  50. data/examples/RedBook/stencil.rb +1 -1
  51. data/examples/RedBook/stroke.rb +2 -2
  52. data/examples/RedBook/surface.rb +1 -1
  53. data/examples/RedBook/teaambient.rb +1 -1
  54. data/examples/RedBook/teapots.rb +1 -1
  55. data/examples/RedBook/tess.rb +1 -1
  56. data/examples/RedBook/texbind.rb +1 -1
  57. data/examples/RedBook/texgen.rb +5 -5
  58. data/examples/RedBook/texturesurf.rb +1 -1
  59. data/examples/RedBook/varray.rb +1 -1
  60. data/examples/RedBook/wrap.rb +5 -5
  61. data/examples/misc/OGLBench.rb +337 -0
  62. data/examples/misc/anisotropic.rb +1 -1
  63. data/examples/misc/fbo_test.rb +356 -0
  64. data/examples/misc/font-glut.rb +1 -1
  65. data/examples/misc/glfwtest.rb +30 -0
  66. data/examples/misc/md2model.rb +15 -0
  67. data/examples/misc/plane.rb +1 -1
  68. data/examples/misc/readpixel.rb +1 -1
  69. data/examples/misc/sdltest.rb +34 -0
  70. data/examples/misc/trislam.rb +828 -0
  71. data/ext/common/common.h +126 -218
  72. data/ext/common/conv.h +244 -0
  73. data/ext/common/funcdef.h +280 -0
  74. data/ext/common/gl-error.h +23 -0
  75. data/ext/common/gl-types.h +14 -0
  76. data/ext/gl/gl-1.0-1.1.c +497 -1255
  77. data/ext/gl/gl-1.2.c +121 -304
  78. data/ext/gl/gl-1.3.c +78 -339
  79. data/ext/gl/gl-1.4.c +102 -164
  80. data/ext/gl/gl-1.5.c +42 -173
  81. data/ext/gl/gl-2.0.c +273 -1039
  82. data/ext/gl/gl-2.1.c +15 -19
  83. data/ext/gl/gl-enums.c +3 -2
  84. data/ext/gl/gl-error.c +104 -0
  85. data/ext/gl/gl-ext-3dfx.c +27 -0
  86. data/ext/gl/gl-ext-arb.c +812 -12
  87. data/ext/gl/gl-ext-ati.c +41 -0
  88. data/ext/gl/gl-ext-ext.c +791 -119
  89. data/ext/gl/gl-ext-gremedy.c +41 -0
  90. data/ext/gl/gl-ext-nv.c +679 -0
  91. data/ext/gl/gl.c +48 -28
  92. data/ext/gl/mkrf_conf.rb +13 -10
  93. data/ext/glu/glu-enums.c +3 -2
  94. data/ext/glu/glu.c +136 -41
  95. data/ext/glu/mkrf_conf.rb +15 -12
  96. data/ext/glut/glut.c +37 -80
  97. data/ext/glut/mkrf_conf.rb +17 -13
  98. data/lib/opengl.rb +29 -53
  99. data/test/tc_common.rb +9 -3
  100. data/test/tc_ext_arb.rb +397 -3
  101. data/test/tc_ext_ati.rb +33 -0
  102. data/test/tc_ext_ext.rb +479 -2
  103. data/test/tc_ext_gremedy.rb +36 -0
  104. data/test/tc_ext_nv.rb +357 -0
  105. data/test/tc_func_10_11.rb +93 -67
  106. data/test/tc_func_12.rb +11 -11
  107. data/test/tc_func_13.rb +38 -18
  108. data/test/tc_func_14.rb +2 -2
  109. data/test/tc_func_15.rb +10 -10
  110. data/test/tc_func_20.rb +20 -20
  111. data/test/tc_func_21.rb +53 -22
  112. data/test/tc_glu.rb +9 -4
  113. data/test/tc_misc.rb +15 -2
  114. metadata +22 -8
  115. data/doc/extensions.txt +0 -361
  116. data/examples/RedBook/aaindex.rb +0 -97
  117. data/examples/misc/smooth.rb +0 -42
  118. data/examples/misc/test.rb +0 -65
@@ -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),GL_FALSE)
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),GL_TRUE)
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(glGetIntegerv(GL_CLAMP_VERTEX_COLOR_ARB),GL_TRUE)
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
@@ -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