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
@@ -98,19 +98,19 @@ class Test_12 < Test::Unit::TestCase
98
98
  assert_equal(glGetConvolutionFilter(GL_CONVOLUTION_2D, GL_RGB, GL_FLOAT),cf)
99
99
 
100
100
  glConvolutionParameterf(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE,GL_CONSTANT_BORDER)
101
- assert_equal(glGetConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),[GL_CONSTANT_BORDER])
101
+ assert_equal(glGetConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),GL_CONSTANT_BORDER)
102
102
 
103
103
  glConvolutionParameterf(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE,GL_REPLICATE_BORDER)
104
- assert_equal(glGetConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),[GL_REPLICATE_BORDER])
104
+ assert_equal(glGetConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),GL_REPLICATE_BORDER)
105
105
 
106
106
  glConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE,[GL_CONSTANT_BORDER])
107
- assert_equal(glGetConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),[GL_CONSTANT_BORDER])
107
+ assert_equal(glGetConvolutionParameterfv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),GL_CONSTANT_BORDER)
108
108
 
109
109
  glConvolutionParameteri(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE,GL_REPLICATE_BORDER)
110
- assert_equal(glGetConvolutionParameteriv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),[GL_REPLICATE_BORDER])
110
+ assert_equal(glGetConvolutionParameteriv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),GL_REPLICATE_BORDER)
111
111
 
112
112
  glConvolutionParameteriv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE,[GL_CONSTANT_BORDER])
113
- assert_equal(glGetConvolutionParameteriv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),[GL_CONSTANT_BORDER])
113
+ assert_equal(glGetConvolutionParameteriv(GL_CONVOLUTION_1D,GL_CONVOLUTION_BORDER_MODE),GL_CONSTANT_BORDER)
114
114
  end
115
115
 
116
116
  def test_separablefilter
@@ -128,9 +128,9 @@ class Test_12 < Test::Unit::TestCase
128
128
  glEnable(GL_HISTOGRAM)
129
129
 
130
130
  glHistogram(GL_HISTOGRAM,1,GL_RGB8,GL_FALSE)
131
- assert_equal(glGetHistogramParameterfv(GL_HISTOGRAM,GL_HISTOGRAM_WIDTH),[1])
132
- assert_equal(glGetHistogramParameteriv(GL_HISTOGRAM,GL_HISTOGRAM_FORMAT),[GL_RGB8])
133
- assert_equal(glGetHistogramParameteriv(GL_HISTOGRAM,GL_HISTOGRAM_SINK),[GL_FALSE])
131
+ assert_equal(glGetHistogramParameterfv(GL_HISTOGRAM,GL_HISTOGRAM_WIDTH),1)
132
+ assert_equal(glGetHistogramParameteriv(GL_HISTOGRAM,GL_HISTOGRAM_FORMAT),GL_RGB8)
133
+ assert_equal(glGetHistogramParameteriv(GL_HISTOGRAM,GL_HISTOGRAM_SINK),GL_FALSE)
134
134
 
135
135
  glDrawPixels(2,1,GL_RGB,GL_FLOAT,[1,1,1,1,1,1].pack("f*"))
136
136
  h = glGetHistogram(GL_HISTOGRAM,GL_FALSE,GL_RGB,GL_FLOAT)
@@ -148,9 +148,9 @@ class Test_12 < Test::Unit::TestCase
148
148
  glEnable(GL_MINMAX)
149
149
 
150
150
  glMinmax(GL_MINMAX,GL_RGB8,GL_FALSE)
151
- assert_equal(glGetMinmaxParameteriv(GL_MINMAX,GL_MINMAX_FORMAT),[GL_RGB8])
152
- assert_equal(glGetMinmaxParameterfv(GL_MINMAX,GL_MINMAX_FORMAT),[GL_RGB8])
153
- assert_equal(glGetMinmaxParameterfv(GL_MINMAX,GL_MINMAX_SINK),[GL_FALSE])
151
+ assert_equal(glGetMinmaxParameteriv(GL_MINMAX,GL_MINMAX_FORMAT),GL_RGB8)
152
+ assert_equal(glGetMinmaxParameterfv(GL_MINMAX,GL_MINMAX_FORMAT),GL_RGB8)
153
+ assert_equal(glGetMinmaxParameteriv(GL_MINMAX,GL_MINMAX_SINK),GL_FALSE)
154
154
 
155
155
  glDrawPixels(2,1,GL_RGB,GL_FLOAT,[0,0,0,1,1,1].pack("f*"))
156
156
  mm = glGetMinmax(GL_MINMAX,GL_FALSE,GL_RGB,GL_FLOAT)
@@ -28,10 +28,10 @@ class Test_13 < Test::Unit::TestCase
28
28
  return if not supported?(1.3)
29
29
  glSampleCoverage(0.0,GL_TRUE)
30
30
  assert_equal(glGetDoublev(GL_SAMPLE_COVERAGE_VALUE),0.0)
31
- assert_equal(glGetDoublev(GL_SAMPLE_COVERAGE_INVERT),GL_TRUE)
31
+ assert_equal(glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT),GL_TRUE)
32
32
  glSampleCoverage(1.0,GL_FALSE)
33
33
  assert_equal(glGetDoublev(GL_SAMPLE_COVERAGE_VALUE),1.0)
34
- assert_equal(glGetDoublev(GL_SAMPLE_COVERAGE_INVERT),GL_FALSE)
34
+ assert_equal(glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT),GL_FALSE)
35
35
  end
36
36
 
37
37
  def test_multitexture
@@ -68,6 +68,26 @@ class Test_13 < Test::Unit::TestCase
68
68
  glLoadIdentity()
69
69
  glMultTransposeMatrixd(m_b)
70
70
  assert_equal(glGetDoublev(GL_TRANSPOSE_MODELVIEW_MATRIX), m_b)
71
+
72
+ # 2
73
+ m = Matrix.rows([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
74
+ glMatrixMode(GL_MODELVIEW)
75
+ glLoadTransposeMatrixf(m)
76
+ assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
77
+ glLoadIdentity()
78
+ glLoadTransposeMatrixd(m)
79
+ assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
80
+ glLoadIdentity()
81
+ glMultTransposeMatrixf(m)
82
+ assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
83
+ glLoadIdentity()
84
+ glMultTransposeMatrixd(m)
85
+ assert_equal(glGetDoublev(GL_MODELVIEW_MATRIX), m.to_a.transpose)
86
+
87
+ assert_raise ArgumentError do glLoadTransposeMatrixf([1,2,3,4]) end
88
+ assert_raise ArgumentError do glLoadTransposeMatrixd([1,2,3,4]) end
89
+ assert_raise ArgumentError do glMultTransposeMatrixf([1,2,3,4]) end
90
+ assert_raise ArgumentError do glMultTransposeMatrixd([1,2,3,4]) end
71
91
  end
72
92
 
73
93
  def test_texturecompression
@@ -86,18 +106,18 @@ class Test_13 < Test::Unit::TestCase
86
106
  # Note: 1D and 3D compressed textures are not supported by S3TC/DXTn, and usually not supported at all
87
107
 
88
108
  # 1D
89
- glCompressedTexImage1D(GL_TEXTURE_1D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,4,0,16,image_1)
90
- err = glGetError()
91
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
92
- if (err == 0)
109
+ begin
110
+ glCompressedTexImage1D(GL_TEXTURE_1D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,4,0,16,image_1)
93
111
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_1D,0), image_1)
112
+ rescue Gl::Error => err
113
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
94
114
  end
95
115
 
96
- glCompressedTexSubImage1D(GL_TEXTURE_1D,0,0,4,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,16,image_2)
97
- err = glGetError()
98
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
99
- if (err == 0)
116
+ begin
117
+ glCompressedTexSubImage1D(GL_TEXTURE_1D,0,0,4,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,16,image_2)
100
118
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_1D,0), image_2)
119
+ rescue Gl::Error => err
120
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
101
121
  end
102
122
 
103
123
  # 2D
@@ -108,18 +128,18 @@ class Test_13 < Test::Unit::TestCase
108
128
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_2D,0), image_2)
109
129
 
110
130
  # 3D
111
- glCompressedTexImage3D(GL_TEXTURE_3D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,2,2,1,0,16,image_1)
112
- err = glGetError()
113
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
114
- if (err == 0)
131
+ begin
132
+ glCompressedTexImage3D(GL_TEXTURE_3D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,2,2,1,0,16,image_1)
115
133
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_3D,0), image_1)
134
+ rescue Gl::Error => err
135
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
116
136
  end
117
137
 
118
- glCompressedTexSubImage3D(GL_TEXTURE_3D,0, 0,0,0, 2,2,1, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 16, image_2)
119
- err = glGetError()
120
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
121
- if (err == 0)
138
+ begin
139
+ glCompressedTexSubImage3D(GL_TEXTURE_3D,0, 0,0,0, 2,2,1, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 16, image_2)
122
140
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_3D,0), image_2)
141
+ rescue Gl::Error => err
142
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
123
143
  end
124
144
 
125
145
  glDeleteTextures(textures)
@@ -128,11 +128,11 @@ class Test_14 < Test::Unit::TestCase
128
128
  assert(approx_equal(glGetDoublev(GL_CURRENT_SECONDARY_COLOR),[0.0,1.0,0.0,1.0]))
129
129
  glSecondaryColor3d(1.0,0.0,1.0)
130
130
  assert(approx_equal(glGetDoublev(GL_CURRENT_SECONDARY_COLOR),[1.0,0.0,1.0,1.0]))
131
- glSecondaryColor3dv(0.0,1.0,0.0)
131
+ glSecondaryColor3dv([0.0,1.0,0.0])
132
132
  assert(approx_equal(glGetDoublev(GL_CURRENT_SECONDARY_COLOR),[0.0,1.0,0.0,1.0]))
133
133
  glSecondaryColor3f(1.0,0.0,1.0)
134
134
  assert(approx_equal(glGetDoublev(GL_CURRENT_SECONDARY_COLOR),[1.0,0.0,1.0,1.0]))
135
- glSecondaryColor3fv(0.0,1.0,0.0)
135
+ glSecondaryColor3fv([0.0,1.0,0.0])
136
136
  assert(approx_equal(glGetDoublev(GL_CURRENT_SECONDARY_COLOR),[0.0,1.0,0.0,1.0]))
137
137
  glSecondaryColor3i(2**31-1,0,2**31-1)
138
138
  assert(approx_equal(glGetDoublev(GL_CURRENT_SECONDARY_COLOR),[1.0,0.0,1.0,1.0]))
@@ -30,7 +30,7 @@ class Test_15 < Test::Unit::TestCase
30
30
  assert_equal(queries.size,2)
31
31
 
32
32
  glBeginQuery(GL_SAMPLES_PASSED,queries[1])
33
- assert_equal(glIsQuery(queries[1]),GL_TRUE)
33
+ assert_equal(glIsQuery(queries[1]),true)
34
34
 
35
35
  glBegin(GL_TRIANGLES)
36
36
  glVertex2i(0,0)
@@ -38,27 +38,27 @@ class Test_15 < Test::Unit::TestCase
38
38
  glVertex2i(1,1)
39
39
  glEnd()
40
40
 
41
- assert_equal(glGetQueryiv(GL_SAMPLES_PASSED,GL_CURRENT_QUERY),[queries[1]])
41
+ assert_equal(glGetQueryiv(GL_SAMPLES_PASSED,GL_CURRENT_QUERY),queries[1])
42
42
 
43
43
  glEndQuery(GL_SAMPLES_PASSED)
44
44
 
45
45
  r = glGetQueryObjectiv(queries[1],GL_QUERY_RESULT_AVAILABLE)
46
- assert((r==[GL_TRUE] || r==[GL_FALSE]))
46
+ assert((r==GL_TRUE || r==GL_FALSE))
47
47
 
48
- if (r==[GL_TRUE])
48
+ if (r==GL_TRUE)
49
49
  assert(glGetQueryObjectiv(queries[1],GL_QUERY_RESULT)[0] > 0)
50
50
  assert(glGetQueryObjectuiv(queries[1],GL_QUERY_RESULT)[0] > 0)
51
51
  end
52
52
 
53
53
  glDeleteQueries(queries)
54
- assert_equal(glIsQuery(queries[1]),GL_FALSE)
54
+ assert_equal(glIsQuery(queries[1]),false)
55
55
  end
56
56
 
57
57
  def test_buffers
58
58
  return if not supported?(1.5)
59
59
  buffers = glGenBuffers(2)
60
60
  glBindBuffer(GL_ARRAY_BUFFER,buffers[0])
61
- assert_equal(glIsBuffer(buffers[0]),GL_TRUE)
61
+ assert_equal(glIsBuffer(buffers[0]),true)
62
62
 
63
63
  data = [0,1,2,3].pack("C*")
64
64
  data2 = [4,5,6,7].pack("C*")
@@ -66,16 +66,16 @@ class Test_15 < Test::Unit::TestCase
66
66
  glBufferData(GL_ARRAY_BUFFER,4,data,GL_STREAM_READ)
67
67
  assert_equal(glGetBufferSubData(GL_ARRAY_BUFFER,0,4),data)
68
68
 
69
- assert_equal(glGetBufferParameteriv(GL_ARRAY_BUFFER,GL_BUFFER_USAGE),[GL_STREAM_READ])
69
+ assert_equal(glGetBufferParameteriv(GL_ARRAY_BUFFER,GL_BUFFER_USAGE),GL_STREAM_READ)
70
70
 
71
71
  glBufferSubData(GL_ARRAY_BUFFER,0,4,data2)
72
72
  assert_equal(glGetBufferSubData(GL_ARRAY_BUFFER,0,4),data2)
73
73
 
74
74
  assert_equal(glMapBuffer(GL_ARRAY_BUFFER,GL_READ_ONLY),data2)
75
75
  r = glUnmapBuffer(GL_ARRAY_BUFFER)
76
- assert(r == GL_TRUE || r == GL_FALSE)
76
+ assert(r == true || r == false)
77
77
  glDeleteBuffers(buffers)
78
- assert_equal(glIsBuffer(buffers[0]),GL_FALSE)
78
+ assert_equal(glIsBuffer(buffers[0]),false)
79
79
 
80
80
  # FIXME: GetBufferPointerv not yet implemented
81
81
  end
@@ -191,7 +191,7 @@ class Test_15 < Test::Unit::TestCase
191
191
  assert_equal(glGetDoublev(GL_CURRENT_NORMAL),[0,1,0])
192
192
  assert_equal(glGetDoublev(GL_CURRENT_COLOR),[1,0,1,0])
193
193
  assert_equal(glGetDoublev(GL_CURRENT_TEXTURE_COORDS),[1,0,1,0])
194
- assert_equal(glGetDoublev(GL_EDGE_FLAG),GL_FALSE)
194
+ assert_equal(glGetBooleanv(GL_EDGE_FLAG),GL_FALSE)
195
195
 
196
196
  glDisable(GL_EDGE_FLAG_ARRAY)
197
197
  glDisable(GL_TEXTURE_COORD_ARRAY)
@@ -172,10 +172,10 @@ class Test_20 < Test::Unit::TestCase
172
172
  vertex_shader_source = "void main() { gl_Position = ftransform();}"
173
173
 
174
174
  program = glCreateProgram()
175
- assert_equal(glIsProgram(program),GL_TRUE)
175
+ assert_equal(glIsProgram(program),true)
176
176
 
177
177
  vs = glCreateShader(GL_VERTEX_SHADER)
178
- assert_equal(glIsShader(vs),GL_TRUE)
178
+ assert_equal(glIsShader(vs),true)
179
179
 
180
180
  glShaderSource(vs,vertex_shader_source)
181
181
  assert_equal(glGetShaderSource(vs),vertex_shader_source)
@@ -188,7 +188,7 @@ class Test_20 < Test::Unit::TestCase
188
188
  assert_equal(vslog.class,String)
189
189
 
190
190
  glAttachShader(program,vs)
191
- assert_equal(glGetAttachedShaders(program),[vs])
191
+ assert_equal(glGetAttachedShaders(program),vs)
192
192
  glDetachShader(program,vs)
193
193
  assert_equal(glGetAttachedShaders(program),nil)
194
194
  glAttachShader(program,vs)
@@ -208,10 +208,10 @@ class Test_20 < Test::Unit::TestCase
208
208
 
209
209
  glDetachShader(program,vs)
210
210
  glDeleteShader(vs)
211
- assert_equal(glIsShader(vs),GL_FALSE)
211
+ assert_equal(glIsShader(vs),false)
212
212
 
213
213
  glDeleteProgram(program)
214
- assert_equal(glIsProgram(program),GL_FALSE)
214
+ assert_equal(glIsProgram(program),false)
215
215
  end
216
216
 
217
217
  def test_shaders_2
@@ -248,7 +248,7 @@ class Test_20 < Test::Unit::TestCase
248
248
 
249
249
  # f
250
250
  glUniform1f(tv1l,2.0)
251
- assert_equal(glGetUniformfv(program,tv1l),[2.0])
251
+ assert_equal(glGetUniformfv(program,tv1l),2.0)
252
252
  glUniform2f(tv2l,2.0,2.0)
253
253
  assert_equal(glGetUniformfv(program,tv2l),[2.0,2.0])
254
254
  glUniform3f(tv3l,2.0,2.0,2.0)
@@ -257,7 +257,7 @@ class Test_20 < Test::Unit::TestCase
257
257
  assert_equal(glGetUniformfv(program,tv4l),[2.0,2.0,2.0,2.0])
258
258
  # i
259
259
  glUniform1i(tv1il,3)
260
- assert_equal(glGetUniformiv(program,tv1il),[3])
260
+ assert_equal(glGetUniformiv(program,tv1il),3)
261
261
  glUniform2i(tv2il,3,3)
262
262
  assert_equal(glGetUniformiv(program,tv2il),[3,3])
263
263
  glUniform3i(tv3il,3,3,3)
@@ -265,22 +265,22 @@ class Test_20 < Test::Unit::TestCase
265
265
  glUniform4i(tv4il,3,3,3,3)
266
266
  assert_equal(glGetUniformiv(program,tv4il),[3,3,3,3])
267
267
  # fv
268
- glUniform1fv(tv1l,1,[3.0])
269
- assert_equal(glGetUniformfv(program,tv1l),[3.0])
270
- glUniform2fv(tv2l,1,[3.0,3.0])
268
+ glUniform1fv(tv1l,[3.0])
269
+ assert_equal(glGetUniformfv(program,tv1l),3.0)
270
+ glUniform2fv(tv2l,[3.0,3.0])
271
271
  assert_equal(glGetUniformfv(program,tv2l),[3.0,3.0])
272
- glUniform3fv(tv3l,1,[3.0,3.0,3.0])
272
+ glUniform3fv(tv3l,[3.0,3.0,3.0])
273
273
  assert_equal(glGetUniformfv(program,tv3l),[3.0,3.0,3.0])
274
- glUniform4fv(tv4l,1,[3.0,3.0,3.0,3.0])
274
+ glUniform4fv(tv4l,[3.0,3.0,3.0,3.0])
275
275
  assert_equal(glGetUniformfv(program,tv4l),[3.0,3.0,3.0,3.0])
276
276
  # iv
277
- glUniform1iv(tv1il,1,[2])
278
- assert_equal(glGetUniformiv(program,tv1il),[2])
279
- glUniform2iv(tv2il,1,[2,2])
277
+ glUniform1iv(tv1il,[2])
278
+ assert_equal(glGetUniformiv(program,tv1il),2)
279
+ glUniform2iv(tv2il,[2,2])
280
280
  assert_equal(glGetUniformiv(program,tv2il),[2,2])
281
- glUniform3iv(tv3il,1,[2,2,2])
281
+ glUniform3iv(tv3il,[2,2,2])
282
282
  assert_equal(glGetUniformiv(program,tv3il),[2,2,2])
283
- glUniform4iv(tv4il,1,[2,2,2,2])
283
+ glUniform4iv(tv4il,[2,2,2,2])
284
284
  assert_equal(glGetUniformiv(program,tv4il),[2,2,2,2])
285
285
 
286
286
  glDeleteShader(vs)
@@ -309,13 +309,13 @@ class Test_20 < Test::Unit::TestCase
309
309
  assert((tm3l = glGetUniformLocation(program,"testmat3"))>=0)
310
310
  assert((tm4l = glGetUniformLocation(program,"testmat4"))>=0)
311
311
 
312
- glUniformMatrix2fv(tm2l, 1, GL_TRUE, [0,1, 1,0])
312
+ glUniformMatrix2fv(tm2l, GL_TRUE, [0,1, 1,0])
313
313
  assert_equal(glGetUniformfv(program,tm2l),[0,1,1,0])
314
314
 
315
- glUniformMatrix3fv(tm3l, 1, GL_TRUE, [0,1,0, 1,0,1, 0,1,0])
315
+ glUniformMatrix3fv(tm3l, GL_TRUE, [0,1,0, 1,0,1, 0,1,0])
316
316
  assert_equal(glGetUniformfv(program,tm3l),[0,1,0, 1,0,1, 0,1,0])
317
317
 
318
- glUniformMatrix4fv(tm4l, 1, GL_TRUE, [0,1,0,1, 1,0,1,0, 0,1,0,1, 1,0,1,0])
318
+ glUniformMatrix4fv(tm4l, GL_TRUE, [0,1,0,1, 1,0,1,0, 0,1,0,1, 1,0,1,0])
319
319
  assert_equal(glGetUniformfv(program,tm4l),[0,1,0,1, 1,0,1,0, 0,1,0,1, 1,0,1,0])
320
320
  end
321
321
 
@@ -49,20 +49,51 @@ class Test_21 < Test::Unit::TestCase
49
49
  assert((tm34l = glGetUniformLocation(program,"testmat34"))>=0)
50
50
  assert((tm43l = glGetUniformLocation(program,"testmat43"))>=0)
51
51
 
52
- glUniformMatrix2x3fv(tm23l, 1, GL_FALSE, [0,1, 1,0, 0,1])
52
+ glUniformMatrix2x3fv(tm23l, GL_FALSE, [0,1, 1,0, 0,1])
53
53
  assert_equal(glGetUniformfv(program,tm23l),[0,1, 1,0, 0,1])
54
- glUniformMatrix3x2fv(tm32l, 1, GL_FALSE, [1,0, 0,1, 1,0])
54
+ glUniformMatrix3x2fv(tm32l, GL_FALSE, [1,0, 0,1, 1,0])
55
55
  assert_equal(glGetUniformfv(program,tm32l),[1,0, 0,1, 1,0])
56
56
 
57
- glUniformMatrix2x4fv(tm24l, 1, GL_FALSE, [0,1, 1,0, 0,1, 1,0])
57
+ glUniformMatrix2x4fv(tm24l, GL_FALSE, [0,1, 1,0, 0,1, 1,0])
58
58
  assert_equal(glGetUniformfv(program,tm24l),[0,1, 1,0, 0,1, 1,0])
59
- glUniformMatrix4x2fv(tm42l, 1, GL_FALSE, [1,0, 0,1, 1,0, 0,1])
59
+ glUniformMatrix4x2fv(tm42l, GL_FALSE, [1,0, 0,1, 1,0, 0,1])
60
60
  assert_equal(glGetUniformfv(program,tm42l),[1,0, 0,1, 1,0, 0,1])
61
61
 
62
- glUniformMatrix3x4fv(tm34l, 1, GL_FALSE, [0,1,1, 1,0,1, 0,1,1, 1,0,1])
62
+ glUniformMatrix3x4fv(tm34l, GL_FALSE, [0,1,1, 1,0,1, 0,1,1, 1,0,1])
63
63
  assert_equal(glGetUniformfv(program,tm34l),[0,1,1, 1,0,1, 0,1,1, 1,0,1])
64
- glUniformMatrix4x3fv(tm43l, 1, GL_FALSE, [1,0,0, 0,1,0, 1,0,0, 0,1,0])
64
+ glUniformMatrix4x3fv(tm43l, GL_FALSE, [1,0,0, 0,1,0, 1,0,0, 0,1,0])
65
65
  assert_equal(glGetUniformfv(program,tm43l),[1,0,0, 0,1,0, 1,0,0, 0,1,0])
66
+
67
+ # 2
68
+ m = Matrix.rows([[0,1],[1,0],[0,1]])
69
+ glUniformMatrix2x3fv(tm23l, GL_FALSE, m)
70
+ assert_equal(glGetUniformfv(program,tm23l),[0,1, 1,0, 0,1])
71
+ m = Matrix.rows([[0,1,1],[0,0,1]])
72
+ glUniformMatrix3x2fv(tm32l, GL_FALSE, m)
73
+ assert_equal(glGetUniformfv(program,tm32l),[0,1,1, 0,0,1])
74
+
75
+ m = Matrix.rows([[0,1],[1,0],[0,1],[1,0]])
76
+ glUniformMatrix2x4fv(tm24l, GL_FALSE, m)
77
+ assert_equal(glGetUniformfv(program,tm24l),[0,1, 1,0, 0,1, 1,0])
78
+ m = Matrix.rows([[0,1,1,1],[0,0,1,1]])
79
+ glUniformMatrix4x2fv(tm42l, GL_FALSE, m)
80
+ assert_equal(glGetUniformfv(program,tm42l),[0,1,1,1, 0,0,1,1])
81
+
82
+ m = Matrix.rows([[0,1,0],[1,0,1],[0,1,0],[1,0,1]])
83
+ glUniformMatrix3x4fv(tm34l, GL_FALSE, m)
84
+ assert_equal(glGetUniformfv(program,tm34l),[0,1,0, 1,0,1, 0,1,0, 1,0,1])
85
+
86
+ m = Matrix.rows([[0,1,1,1],[0,0,1,1],[1,1,0,0]])
87
+ glUniformMatrix4x3fv(tm43l, GL_FALSE, m)
88
+ assert_equal(glGetUniformfv(program,tm43l),[0,1,1,1, 0,0,1,1, 1,1,0,0])
89
+
90
+ # 3
91
+ assert_raise ArgumentError do glUniformMatrix2x3fv(tm23l, GL_FALSE, [1,2,3,4]) end
92
+ assert_raise ArgumentError do glUniformMatrix3x2fv(tm32l, GL_FALSE, [1,2,3,4]) end
93
+ assert_raise ArgumentError do glUniformMatrix2x4fv(tm24l, GL_FALSE, [1,2,3,4]) end
94
+ assert_raise ArgumentError do glUniformMatrix4x2fv(tm42l, GL_FALSE, [1,2,3,4]) end
95
+ assert_raise ArgumentError do glUniformMatrix3x4fv(tm34l, GL_FALSE, [1,2,3,4]) end
96
+ assert_raise ArgumentError do glUniformMatrix4x3fv(tm43l, GL_FALSE, [1,2,3,4]) end
66
97
  end
67
98
 
68
99
  def test_pixelunpack_bitmap
@@ -186,19 +217,19 @@ class Test_21 < Test::Unit::TestCase
186
217
 
187
218
  # 1D
188
219
  glBindBuffer(GL_PIXEL_UNPACK_BUFFER,buffers[0])
189
- glCompressedTexImage1D(GL_TEXTURE_1D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,4,0,16,0)
190
- err = glGetError()
191
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
192
- if (err == 0)
220
+ begin
221
+ glCompressedTexImage1D(GL_TEXTURE_1D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,4,0,16,0)
193
222
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_1D,0), image_1)
223
+ rescue Gl::Error => err
224
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
194
225
  end
195
226
 
196
227
  glBindBuffer(GL_PIXEL_UNPACK_BUFFER,buffers[1])
197
- glCompressedTexSubImage1D(GL_TEXTURE_1D,0,0,4,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,16,0)
198
- err = glGetError()
199
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
200
- if (err == 0)
228
+ begin
229
+ glCompressedTexSubImage1D(GL_TEXTURE_1D,0,0,4,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,16,0)
201
230
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_1D,0), image_2)
231
+ rescue Gl::Error => err
232
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
202
233
  end
203
234
 
204
235
  # 2D
@@ -212,19 +243,19 @@ class Test_21 < Test::Unit::TestCase
212
243
 
213
244
  # 3D
214
245
  glBindBuffer(GL_PIXEL_UNPACK_BUFFER,buffers[0])
215
- glCompressedTexImage3D(GL_TEXTURE_3D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,2,2,1,0,16,0)
216
- err = glGetError()
217
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
218
- if (err == 0)
246
+ begin
247
+ glCompressedTexImage3D(GL_TEXTURE_3D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,2,2,1,0,16,0)
219
248
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_3D,0), image_1)
249
+ rescue Gl::Error => err
250
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
220
251
  end
221
252
 
222
253
  glBindBuffer(GL_PIXEL_UNPACK_BUFFER,buffers[1])
223
- glCompressedTexSubImage3D(GL_TEXTURE_3D,0, 0,0,0, 2,2,1, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 16, 0)
224
- err = glGetError()
225
- assert(err == 0 || err == GL_INVALID_ENUM || err == GL_INVALID_OPERATION)
226
- if (err == 0)
254
+ begin
255
+ glCompressedTexSubImage3D(GL_TEXTURE_3D,0, 0,0,0, 2,2,1, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 16, 0)
227
256
  assert_equal(glGetCompressedTexImage(GL_TEXTURE_3D,0), image_2)
257
+ rescue Gl::Error => err
258
+ assert(err.id == GL_INVALID_ENUM || err.id == GL_INVALID_OPERATION)
228
259
  end
229
260
 
230
261
  glDeleteBuffers(buffers)
@@ -97,10 +97,12 @@ class Test_GLU < Test::Unit::TestCase
97
97
  assert_equal(pos,[$window_size,$window_size,1])
98
98
 
99
99
  mp = glGetDoublev(GL_PROJECTION_MATRIX)
100
- mm = glGetDoublev(GL_MODELVIEW_MATRIX)
100
+ mm = Matrix.rows(glGetDoublev(GL_MODELVIEW_MATRIX))
101
101
  view = glGetDoublev(GL_VIEWPORT)
102
102
  pos = gluProject(1,1,1,mp,mm,view)
103
103
  assert_equal(pos,[$window_size,$window_size,1])
104
+
105
+ assert_raise ArgumentError do pos = gluProject(1,1,1,mp,[1,2,3,4],view) end
104
106
  end
105
107
 
106
108
  def test_gluunproject
@@ -108,10 +110,11 @@ class Test_GLU < Test::Unit::TestCase
108
110
  assert_equal(pos,[1,1,1])
109
111
 
110
112
  mp = glGetDoublev(GL_PROJECTION_MATRIX)
111
- mm = glGetDoublev(GL_MODELVIEW_MATRIX)
113
+ mm = Matrix.rows(glGetDoublev(GL_MODELVIEW_MATRIX))
112
114
  view = glGetDoublev(GL_VIEWPORT)
113
115
  pos = gluUnProject($window_size,$window_size,1,mp,mm,view)
114
116
  assert_equal(pos,[1,1,1])
117
+ assert_raise ArgumentError do pos = gluUnProject($window_size,$window_size,1,mp,[1,2,3,4],view) end
115
118
  end
116
119
 
117
120
  def test_glupickmatrix
@@ -192,14 +195,16 @@ class Test_GLU < Test::Unit::TestCase
192
195
  end
193
196
 
194
197
  m = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]
198
+ m2 = Matrix.rows(m)
195
199
 
196
200
  n = gluNewNurbsRenderer()
197
201
  gluNurbsCallback(n,GLU_ERROR,n_error)
198
202
  gluNurbsProperty(n,GLU_SAMPLING_TOLERANCE,40)
199
203
  assert_equal(gluGetNurbsProperty(n,GLU_SAMPLING_TOLERANCE),40)
200
204
 
201
- gluLoadSamplingMatrices(n,m,m,glGetIntegerv(GL_VIEWPORT))
202
-
205
+ gluLoadSamplingMatrices(n,m,m2,glGetIntegerv(GL_VIEWPORT))
206
+ assert_raise ArgumentError do gluLoadSamplingMatrices(n,m,[1,2,3,4],glGetIntegerv(GL_VIEWPORT)) end
207
+
203
208
  knots = [0,0,0,0,1,1,1,1]
204
209
  ctlpoints_curve = [[50,50,0],[400,50,0],[400,400,0],[50,400,0]]
205
210