ruby-opengl 0.50.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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