opengl 0.9.0-x64-mingw32

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 (145) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +3 -0
  3. data.tar.gz.sig +0 -0
  4. data/.autotest +29 -0
  5. data/.gemtest +0 -0
  6. data/.gitignore +6 -0
  7. data/.travis.yml +19 -0
  8. data/History.rdoc +77 -0
  9. data/MIT-LICENSE +18 -0
  10. data/Manifest.txt +138 -0
  11. data/README.rdoc +102 -0
  12. data/Rakefile +60 -0
  13. data/examples/NeHe/NeHe.png +0 -0
  14. data/examples/NeHe/crate.png +0 -0
  15. data/examples/NeHe/glass.png +0 -0
  16. data/examples/NeHe/nehe_lesson02.rb +117 -0
  17. data/examples/NeHe/nehe_lesson03.rb +123 -0
  18. data/examples/NeHe/nehe_lesson04.rb +132 -0
  19. data/examples/NeHe/nehe_lesson05.rb +182 -0
  20. data/examples/NeHe/nehe_lesson06.rb +186 -0
  21. data/examples/NeHe/nehe_lesson07.rb +240 -0
  22. data/examples/NeHe/nehe_lesson08.rb +255 -0
  23. data/examples/NeHe/nehe_lesson09.rb +203 -0
  24. data/examples/NeHe/nehe_lesson11.rb +176 -0
  25. data/examples/NeHe/nehe_lesson12.rb +203 -0
  26. data/examples/NeHe/nehe_lesson16.rb +211 -0
  27. data/examples/NeHe/nehe_lesson19.rb +209 -0
  28. data/examples/NeHe/nehe_lesson36.rb +308 -0
  29. data/examples/NeHe/particle.png +0 -0
  30. data/examples/NeHe/star.png +0 -0
  31. data/examples/NeHe/tim.png +0 -0
  32. data/examples/OrangeBook/3Dlabs-License.txt +33 -0
  33. data/examples/OrangeBook/brick.frag +36 -0
  34. data/examples/OrangeBook/brick.rb +378 -0
  35. data/examples/OrangeBook/brick.vert +41 -0
  36. data/examples/OrangeBook/particle.frag +17 -0
  37. data/examples/OrangeBook/particle.rb +408 -0
  38. data/examples/OrangeBook/particle.vert +38 -0
  39. data/examples/README +16 -0
  40. data/examples/RedBook/aapoly.rb +143 -0
  41. data/examples/RedBook/aargb.rb +121 -0
  42. data/examples/RedBook/accanti.rb +164 -0
  43. data/examples/RedBook/accpersp.rb +217 -0
  44. data/examples/RedBook/alpha.rb +125 -0
  45. data/examples/RedBook/alpha3D.rb +160 -0
  46. data/examples/RedBook/bezcurve.rb +107 -0
  47. data/examples/RedBook/bezmesh.rb +139 -0
  48. data/examples/RedBook/checker.rb +126 -0
  49. data/examples/RedBook/clip.rb +97 -0
  50. data/examples/RedBook/colormat.rb +137 -0
  51. data/examples/RedBook/cube.rb +71 -0
  52. data/examples/RedBook/depthcue.rb +101 -0
  53. data/examples/RedBook/dof.rb +206 -0
  54. data/examples/RedBook/double.rb +107 -0
  55. data/examples/RedBook/drawf.rb +93 -0
  56. data/examples/RedBook/feedback.rb +147 -0
  57. data/examples/RedBook/fog.rb +168 -0
  58. data/examples/RedBook/font.rb +153 -0
  59. data/examples/RedBook/hello.rb +81 -0
  60. data/examples/RedBook/image.rb +139 -0
  61. data/examples/RedBook/jitter.rb +207 -0
  62. data/examples/RedBook/light.rb +155 -0
  63. data/examples/RedBook/lines.rb +130 -0
  64. data/examples/RedBook/list.rb +113 -0
  65. data/examples/RedBook/material.rb +276 -0
  66. data/examples/RedBook/mipmap.rb +158 -0
  67. data/examples/RedBook/model.rb +115 -0
  68. data/examples/RedBook/movelight.rb +134 -0
  69. data/examples/RedBook/pickdepth.rb +181 -0
  70. data/examples/RedBook/planet.rb +110 -0
  71. data/examples/RedBook/quadric.rb +160 -0
  72. data/examples/RedBook/robot.rb +117 -0
  73. data/examples/RedBook/select.rb +198 -0
  74. data/examples/RedBook/smooth.rb +97 -0
  75. data/examples/RedBook/stencil.rb +165 -0
  76. data/examples/RedBook/stroke.rb +169 -0
  77. data/examples/RedBook/surface.rb +168 -0
  78. data/examples/RedBook/teaambient.rb +134 -0
  79. data/examples/RedBook/teapots.rb +184 -0
  80. data/examples/RedBook/tess.rb +185 -0
  81. data/examples/RedBook/texbind.rb +149 -0
  82. data/examples/RedBook/texgen.rb +171 -0
  83. data/examples/RedBook/texturesurf.rb +130 -0
  84. data/examples/RedBook/varray.rb +161 -0
  85. data/examples/RedBook/wrap.rb +150 -0
  86. data/examples/misc/OGLBench.rb +338 -0
  87. data/examples/misc/anisotropic.rb +196 -0
  88. data/examples/misc/fbo_test.rb +357 -0
  89. data/examples/misc/font-glut.rb +47 -0
  90. data/examples/misc/glfwtest.rb +30 -0
  91. data/examples/misc/plane.rb +161 -0
  92. data/examples/misc/readpixel.rb +66 -0
  93. data/examples/misc/sdltest.rb +36 -0
  94. data/examples/misc/trislam.rb +829 -0
  95. data/ext/opengl/common.h +428 -0
  96. data/ext/opengl/conv.h +244 -0
  97. data/ext/opengl/extconf.rb +47 -0
  98. data/ext/opengl/funcdef.h +313 -0
  99. data/ext/opengl/gl-1.0-1.1.c +3075 -0
  100. data/ext/opengl/gl-1.2.c +155 -0
  101. data/ext/opengl/gl-1.3.c +443 -0
  102. data/ext/opengl/gl-1.4.c +348 -0
  103. data/ext/opengl/gl-1.5.c +224 -0
  104. data/ext/opengl/gl-2.0.c +667 -0
  105. data/ext/opengl/gl-2.1.c +57 -0
  106. data/ext/opengl/gl-3.0.c +493 -0
  107. data/ext/opengl/gl-enums.c +4873 -0
  108. data/ext/opengl/gl-enums.h +14588 -0
  109. data/ext/opengl/gl-error.c +112 -0
  110. data/ext/opengl/gl-error.h +28 -0
  111. data/ext/opengl/gl-ext-3dfx.c +27 -0
  112. data/ext/opengl/gl-ext-arb.c +875 -0
  113. data/ext/opengl/gl-ext-ati.c +41 -0
  114. data/ext/opengl/gl-ext-ext.c +889 -0
  115. data/ext/opengl/gl-ext-gremedy.c +41 -0
  116. data/ext/opengl/gl-ext-nv.c +680 -0
  117. data/ext/opengl/gl-types.h +67 -0
  118. data/ext/opengl/gl.c +220 -0
  119. data/ext/opengl/gl_buffer.c +177 -0
  120. data/ext/opengl/opengl.c +7 -0
  121. data/lib/gl.rb +1 -0
  122. data/lib/opengl.rb +53 -0
  123. data/lib/opengl/2.0/opengl.so +0 -0
  124. data/lib/opengl/2.1/opengl.so +0 -0
  125. data/lib/opengl/test_case.rb +86 -0
  126. data/test/dummy.xorg.conf +140 -0
  127. data/test/test_gl.rb +38 -0
  128. data/test/test_gl_10_11.rb +1363 -0
  129. data/test/test_gl_12.rb +71 -0
  130. data/test/test_gl_13.rb +221 -0
  131. data/test/test_gl_14.rb +218 -0
  132. data/test/test_gl_15.rb +258 -0
  133. data/test/test_gl_20.rb +417 -0
  134. data/test/test_gl_21.rb +436 -0
  135. data/test/test_gl_ext_arb.rb +508 -0
  136. data/test/test_gl_ext_ati.rb +28 -0
  137. data/test/test_gl_ext_ext.rb +608 -0
  138. data/test/test_gl_ext_gremedy.rb +29 -0
  139. data/test/test_gl_ext_nv.rb +349 -0
  140. data/test/test_opengl_buffer.rb +120 -0
  141. data/utils/README +6 -0
  142. data/utils/enumgen.rb +108 -0
  143. data/utils/extlistgen.rb +90 -0
  144. metadata +319 -0
  145. metadata.gz.sig +1 -0
@@ -0,0 +1,29 @@
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 'opengl/test_case'
17
+
18
+ class TestGlExtGremedy < OpenGL::TestCase
19
+
20
+ def test_gl_gremedy_string_marker
21
+ supported?("GL_GREMEDY_string_marker")
22
+ glStringMarkerGREMEDY("test")
23
+ end
24
+
25
+ def test_gl_gremedy_frame_terminator
26
+ supported?("GL_GREMEDY_frame_terminator")
27
+ glFrameTerminatorGREMEDY()
28
+ end
29
+ end
@@ -0,0 +1,349 @@
1
+ # Copyright (C) 2007 Jan Dvorak <jan.dvorak@kraxnet.cz>
2
+ #
3
+ # This program is distributed under the terms of the MIT license.
4
+ # See the included MIT-LICENSE file for the terms of this license.
5
+ #
6
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
7
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
8
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
9
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
10
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
11
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
12
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13
+ #
14
+
15
+ require 'opengl/test_case'
16
+
17
+ class TestGlExtNv < OpenGL::TestCase
18
+
19
+ def test_gl_nv_vertex_program
20
+ supported?("GL_NV_vertex_program")
21
+
22
+ assert_equal(false, glIsProgramNV(0))
23
+ programs = glGenProgramsNV(2)
24
+ assert_equal(2, programs.size)
25
+
26
+ program = "!!VSP1.0\nEND"
27
+
28
+ glBindProgramNV(GL_VERTEX_PROGRAM_NV, programs[1])
29
+ glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, programs[0], program)
30
+ assert_equal(program, glGetProgramStringNV(programs[0], GL_PROGRAM_STRING_NV))
31
+ assert_equal(true, glIsProgramNV(programs[0]))
32
+
33
+ assert_equal(program.size, glGetProgramivNV(programs[0],GL_PROGRAM_LENGTH_NV))
34
+
35
+ glVertexAttribPointerNV(1,2,GL_FLOAT,0,[1,1].pack("f*"))
36
+ assert_equal([1,1].pack("f*"), glGetVertexAttribPointervNV(1))
37
+
38
+ glExecuteProgramNV(GL_VERTEX_STATE_PROGRAM_NV,programs[0],[1,1,1,1])
39
+
40
+ glProgramParameter4dNV(GL_VERTEX_PROGRAM_NV,1, 1,2,3,4)
41
+ assert_equal([1,2,3,4], glGetProgramParameterdvNV(GL_VERTEX_PROGRAM_NV,1,GL_PROGRAM_PARAMETER_NV))
42
+ glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV,1, 5,6,7,8)
43
+ assert_equal([5,6,7,8], glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV,1,GL_PROGRAM_PARAMETER_NV))
44
+ glProgramParameter4dvNV(GL_VERTEX_PROGRAM_NV,1, [1,2,3,4])
45
+ assert_equal([1,2,3,4], glGetProgramParameterdvNV(GL_VERTEX_PROGRAM_NV,1,GL_PROGRAM_PARAMETER_NV))
46
+ glProgramParameter4fvNV(GL_VERTEX_PROGRAM_NV,1, [5,6,7,8])
47
+ assert_equal([5,6,7,8], glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV,1,GL_PROGRAM_PARAMETER_NV))
48
+
49
+ glProgramParameters4fvNV(GL_VERTEX_PROGRAM_NV,1, [1,2,3,4,5,6,7,8])
50
+ assert_equal([1,2,3,4], glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV,1,GL_PROGRAM_PARAMETER_NV))
51
+ assert_equal([5,6,7,8], glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV,2,GL_PROGRAM_PARAMETER_NV))
52
+
53
+ glProgramParameters4dvNV(GL_VERTEX_PROGRAM_NV,1, [8,7,6,5,4,3,2,1])
54
+ assert_equal([8,7,6,5], glGetProgramParameterdvNV(GL_VERTEX_PROGRAM_NV,1,GL_PROGRAM_PARAMETER_NV))
55
+ assert_equal([4,3,2,1], glGetProgramParameterdvNV(GL_VERTEX_PROGRAM_NV,2,GL_PROGRAM_PARAMETER_NV))
56
+
57
+
58
+ glVertexAttrib1dNV(1,1)
59
+ assert_equal(1, glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0])
60
+ glVertexAttrib1fNV(1,2)
61
+ assert_equal(2, glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0])
62
+ glVertexAttrib1sNV(1,3)
63
+ assert_equal(3, glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0])
64
+ glVertexAttrib1dvNV(1,[1])
65
+ assert_equal(1, glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0])
66
+ glVertexAttrib1fvNV(1,[2])
67
+ assert_equal(2, glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0])
68
+ glVertexAttrib1svNV(1,[3])
69
+ assert_equal(3, glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0])
70
+
71
+ glVertexAttrib2dNV(1,1,2)
72
+ assert_equal([1,2], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
73
+ glVertexAttrib2fNV(1,2,3)
74
+ assert_equal([2,3], glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
75
+ glVertexAttrib2sNV(1,3,4)
76
+ assert_equal([3,4], glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
77
+ glVertexAttrib2dvNV(1,[1,2])
78
+ assert_equal([1,2], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
79
+ glVertexAttrib2fvNV(1,[2,3])
80
+ assert_equal([2,3], glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
81
+ glVertexAttrib2svNV(1,[3,4])
82
+ assert_equal([3,4], glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
83
+
84
+ glVertexAttrib3dNV(1,1,2,3)
85
+ assert_equal([1,2,3], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
86
+ glVertexAttrib3fNV(1,2,3,4)
87
+ assert_equal([2,3,4], glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
88
+ glVertexAttrib3sNV(1,3,4,5)
89
+ assert_equal([3,4,5], glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
90
+ glVertexAttrib3dvNV(1,[1,2,3])
91
+ assert_equal([1,2,3], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
92
+ glVertexAttrib3fvNV(1,[2,3,4])
93
+ assert_equal([2,3,4], glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
94
+ glVertexAttrib3svNV(1,[3,4,5])
95
+ assert_equal([3,4,5], glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
96
+
97
+ glVertexAttrib4dNV(1,1,2,3,4)
98
+ assert_equal([1,2,3,4], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
99
+ glVertexAttrib4fNV(1,2,3,4,5)
100
+ assert_equal([2,3,4,5], glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
101
+ glVertexAttrib4sNV(1,3,4,5,6)
102
+ assert_equal([3,4,5,6], glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
103
+ glVertexAttrib4dvNV(1,[1,2,3,4])
104
+ assert_equal([1,2,3,4], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
105
+ glVertexAttrib4fvNV(1,[2,3,4,5])
106
+ assert_equal([2,3,4,5], glGetVertexAttribfvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
107
+ glVertexAttrib4svNV(1,[3,4,5,6])
108
+ assert_equal([3,4,5,6], glGetVertexAttribivNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
109
+
110
+ glVertexAttrib4ubNV(1,2**8-1,0,2**8-1,0)
111
+ assert_equal([1,0,1,0], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
112
+ glVertexAttrib4ubvNV(1,[0,2**8-1,0,2**8-1])
113
+ assert_equal([0,1,0,1], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
114
+
115
+ glVertexAttribs1dvNV(1,[1,2])
116
+ assert_equal(1, glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0])
117
+ assert_equal(2, glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0])
118
+ glVertexAttribs1fvNV(1,[3,4])
119
+ assert_equal(3, glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0])
120
+ assert_equal(4, glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0])
121
+ glVertexAttribs1svNV(1,[5,6])
122
+ assert_equal(5, glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0])
123
+ assert_equal(6, glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0])
124
+
125
+ glVertexAttribs2dvNV(1,[1,2,3,4])
126
+ assert_equal([1,2], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
127
+ assert_equal([3,4], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,2])
128
+ glVertexAttribs2fvNV(1,[3,4,5,6])
129
+ assert_equal([3,4], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
130
+ assert_equal([5,6], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,2])
131
+ glVertexAttribs2svNV(1,[5,6,7,8])
132
+ assert_equal([5,6], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,2])
133
+ assert_equal([7,8], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,2])
134
+
135
+ glVertexAttribs3dvNV(1,[1,2,3,4,5,6])
136
+ assert_equal([1,2,3], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
137
+ assert_equal([4,5,6], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,3])
138
+ glVertexAttribs3fvNV(1,[3,4,5,6,7,8])
139
+ assert_equal([3,4,5], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
140
+ assert_equal([6,7,8], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,3])
141
+ glVertexAttribs3svNV(1,[5,6,7,8,9,10])
142
+ assert_equal([5,6,7], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,3])
143
+ assert_equal([8,9,10], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,3])
144
+
145
+ glVertexAttribs4dvNV(1,[1,2,3,4,5,6,7,8])
146
+ assert_equal([1,2,3,4], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
147
+ assert_equal([5,6,7,8], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,4])
148
+ glVertexAttribs4fvNV(1,[3,4,5,6,7,8,9,10])
149
+ assert_equal([3,4,5,6], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
150
+ assert_equal([7,8,9,10], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,4])
151
+ glVertexAttribs4svNV(1,[5,6,7,8,9,10,11,12])
152
+ assert_equal([5,6,7,8], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
153
+ assert_equal([9,10,11,12], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,4])
154
+ glVertexAttribs4ubvNV(1,[2**8-1,0,2**8-1,0,2**8-1,0,2**8-1,0])
155
+ assert_equal([1,0,1,0], glGetVertexAttribdvNV(1,GL_CURRENT_ATTRIB_NV)[0,4])
156
+ assert_equal([1,0,1,0], glGetVertexAttribdvNV(2,GL_CURRENT_ATTRIB_NV)[0,4])
157
+
158
+ glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 4, GL_MATRIX0_NV, GL_IDENTITY_NV);
159
+ assert_equal(GL_MATRIX0_NV, glGetTrackMatrixivNV(GL_VERTEX_PROGRAM_NV, 4, GL_TRACK_MATRIX_NV))
160
+
161
+ glRequestResidentProgramsNV(programs[0])
162
+ res = glAreProgramsResidentNV(programs[0])
163
+ assert_equal(res.size,1)
164
+
165
+ glDeleteProgramsNV(programs)
166
+ end
167
+
168
+ def test_gl_nv_fragment_program
169
+ supported?("GL_NV_fragment_program")
170
+ programs = glGenProgramsNV(1)
171
+ program = "!!FP1.0\nDECLARE test = {0,0,0,0};\nEND"
172
+ glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, programs[0])
173
+ glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, programs[0], program)
174
+
175
+ glProgramNamedParameter4fNV(programs[0],"test",1,2,3,4)
176
+ assert_equal([1,2,3,4], glGetProgramNamedParameterfvNV(programs[0],"test"))
177
+ glProgramNamedParameter4dNV(programs[0],"test",5,6,7,8)
178
+ assert_equal([5,6,7,8], glGetProgramNamedParameterdvNV(programs[0],"test"))
179
+ glProgramNamedParameter4fvNV(programs[0],"test",[1,2,3,4])
180
+ assert_equal([1,2,3,4], glGetProgramNamedParameterfvNV(programs[0],"test"))
181
+ glProgramNamedParameter4dvNV(programs[0],"test",[5,6,7,8])
182
+ assert_equal([5,6,7,8], glGetProgramNamedParameterdvNV(programs[0],"test"))
183
+
184
+ glDeleteProgramsNV(programs)
185
+ end
186
+
187
+ def test_gl_nv_framebuffer_multisample_coverage
188
+ supported?("GL_NV_framebuffer_multisample_coverage")
189
+ rb = glGenRenderbuffersEXT(1)[0]
190
+
191
+ glBindRenderbufferEXT(GL_RENDERBUFFER_EXT,rb)
192
+ glRenderbufferStorageMultisampleCoverageNV(GL_RENDERBUFFER_EXT,4,4, GL_RGBA,2,2)
193
+ samples = glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,GL_RENDERBUFFER_COVERAGE_SAMPLES_NV)
194
+ assert_equal(4, samples)
195
+ samples = glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,GL_RENDERBUFFER_COLOR_SAMPLES_NV)
196
+ assert_equal(4, samples)
197
+
198
+ glDeleteRenderbuffersEXT(rb)
199
+ end
200
+
201
+ def test_gl_nv_fence
202
+ supported?("GL_NV_fence")
203
+ fences = glGenFencesNV(2)
204
+ assert_equal(fences.size,2)
205
+
206
+ glSetFenceNV(fences[0],GL_ALL_COMPLETED_NV)
207
+ assert_equal(GL_ALL_COMPLETED_NV, glGetFenceivNV(fences[0],GL_FENCE_CONDITION_NV))
208
+ assert_equal(true, glIsFenceNV(fences[0]))
209
+
210
+ glFinishFenceNV(fences[0])
211
+ assert_equal(true, glTestFenceNV(fences[0]))
212
+
213
+ glDeleteFencesNV(fences)
214
+ end
215
+
216
+ def test_gl_nv_depth_buffer_float
217
+ supported?("GL_NV_depth_buffer_float")
218
+ glDepthRangedNV(0.1,0.2)
219
+ assert_in_delta([0.1,0.2], glGetFloatv(GL_DEPTH_RANGE))
220
+ glDepthBoundsdNV(0.1,0.2)
221
+ assert_in_delta([0.1,0.2], glGetFloatv(GL_DEPTH_BOUNDS_EXT))
222
+ glClearDepthdNV(0.3)
223
+ assert_in_delta([0.3], [glGetDoublev(GL_DEPTH_CLEAR_VALUE)])
224
+ end
225
+
226
+ def test_gl_nv_occlusion_query
227
+ supported?("GL_NV_occlusion_query")
228
+
229
+ queries = glGenOcclusionQueriesNV(2)
230
+ assert_equal(queries.size,2)
231
+
232
+ glBeginOcclusionQueryNV(queries[0])
233
+ assert_equal(true, glIsOcclusionQueryNV(queries[0]))
234
+
235
+ glEndOcclusionQueryNV()
236
+ r = glGetOcclusionQueryivNV(queries[0],GL_PIXEL_COUNT_AVAILABLE_NV)
237
+ assert(r==GL_TRUE || r==GL_FALSE)
238
+ assert(glGetOcclusionQueryuivNV(queries[0],GL_PIXEL_COUNT_NV)>=0)
239
+
240
+ glDeleteOcclusionQueriesNV(queries)
241
+ assert_equal(false, glIsOcclusionQueryNV(queries[1]))
242
+ end
243
+
244
+ def test_gl_nv_gpu_program4
245
+ supported?(["GL_NV_gpu_program4","GL_ARB_vertex_program"])
246
+
247
+ programs = glGenProgramsARB(1)
248
+ program = "!!ARBvp1.0\nTEMP vv;\nEND"
249
+
250
+ glBindProgramARB(GL_VERTEX_PROGRAM_ARB, programs[0])
251
+ glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, program)
252
+
253
+ glProgramLocalParameterI4iNV(GL_VERTEX_PROGRAM_ARB,1, 1,2,3,4)
254
+ assert_equal([1,2,3,4], glGetProgramLocalParameterIivNV(GL_VERTEX_PROGRAM_ARB,1))
255
+ glProgramLocalParameterI4uiNV(GL_VERTEX_PROGRAM_ARB,1, 5,6,7,8)
256
+ assert_equal([5,6,7,8], glGetProgramLocalParameterIuivNV(GL_VERTEX_PROGRAM_ARB,1))
257
+ glProgramLocalParameterI4ivNV(GL_VERTEX_PROGRAM_ARB,1, [1,2,3,4])
258
+ assert_equal([1,2,3,4], glGetProgramLocalParameterIivNV(GL_VERTEX_PROGRAM_ARB,1))
259
+ glProgramLocalParameterI4uivNV(GL_VERTEX_PROGRAM_ARB,1, [5,6,7,8])
260
+ assert_equal([5,6,7,8], glGetProgramLocalParameterIuivNV(GL_VERTEX_PROGRAM_ARB,1))
261
+ glProgramLocalParametersI4ivNV(GL_VERTEX_PROGRAM_ARB,1, [1,2,3,4])
262
+ assert_equal([1,2,3,4], glGetProgramLocalParameterIivNV(GL_VERTEX_PROGRAM_ARB,1))
263
+ glProgramLocalParametersI4uivNV(GL_VERTEX_PROGRAM_ARB,1, [5,6,7,8])
264
+ assert_equal([5,6,7,8], glGetProgramLocalParameterIuivNV(GL_VERTEX_PROGRAM_ARB,1))
265
+
266
+ glProgramEnvParameterI4iNV(GL_VERTEX_PROGRAM_ARB,1, 1,2,3,4)
267
+ assert_equal([1,2,3,4], glGetProgramEnvParameterIivNV(GL_VERTEX_PROGRAM_ARB,1))
268
+ glProgramEnvParameterI4uiNV(GL_VERTEX_PROGRAM_ARB,1, 5,6,7,8)
269
+ assert_equal([5,6,7,8], glGetProgramEnvParameterIuivNV(GL_VERTEX_PROGRAM_ARB,1))
270
+ glProgramEnvParameterI4ivNV(GL_VERTEX_PROGRAM_ARB,1, [1,2,3,4])
271
+ assert_equal([1,2,3,4], glGetProgramEnvParameterIivNV(GL_VERTEX_PROGRAM_ARB,1))
272
+ glProgramEnvParameterI4uivNV(GL_VERTEX_PROGRAM_ARB,1, [5,6,7,8])
273
+ assert_equal([5,6,7,8], glGetProgramEnvParameterIuivNV(GL_VERTEX_PROGRAM_ARB,1))
274
+ glProgramEnvParametersI4ivNV(GL_VERTEX_PROGRAM_ARB,1, [1,2,3,4])
275
+ assert_equal([1,2,3,4], glGetProgramEnvParameterIivNV(GL_VERTEX_PROGRAM_ARB,1))
276
+ glProgramEnvParametersI4uivNV(GL_VERTEX_PROGRAM_ARB,1, [5,6,7,8])
277
+ assert_equal([5,6,7,8], glGetProgramEnvParameterIuivNV(GL_VERTEX_PROGRAM_ARB,1))
278
+
279
+ glDeleteProgramsARB(programs)
280
+ end
281
+
282
+ def test_gl_nv_gpu_program4
283
+ supported?(["GL_NV_gpu_program4","GL_EXT_framebuffer_object"])
284
+ geometry_program = <<-EOP
285
+ !!NVgp4.0
286
+ PRIMITIVE_IN TRIANGLES;
287
+ PRIMITIVE_OUT TRIANGLE_STRIP;
288
+ VERTICES_OUT 1;
289
+ END
290
+ EOP
291
+
292
+ program_id = glGenProgramsARB(1)[0]
293
+ glBindProgramARB(GL_GEOMETRY_PROGRAM_NV, program_id)
294
+ glProgramStringARB(GL_GEOMETRY_PROGRAM_NV, GL_PROGRAM_FORMAT_ASCII_ARB, geometry_program);
295
+
296
+ assert_equal(1, glGetProgramivARB(GL_GEOMETRY_PROGRAM_NV,GL_GEOMETRY_VERTICES_OUT_EXT))
297
+ glProgramVertexLimitNV(GL_GEOMETRY_PROGRAM_NV, 2)
298
+ assert_equal(2, glGetProgramivARB(GL_GEOMETRY_PROGRAM_NV,GL_GEOMETRY_VERTICES_OUT_EXT))
299
+
300
+ #
301
+
302
+ fbo = glGenFramebuffersEXT(1)[0]
303
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fbo)
304
+
305
+ texture2d,texture3d,texture_cube = glGenTextures(3)
306
+ glBindTexture(GL_TEXTURE_2D, texture2d)
307
+ glBindTexture(GL_TEXTURE_3D, texture3d)
308
+ glBindTexture(GL_TEXTURE_CUBE_MAP, texture_cube)
309
+
310
+ glFramebufferTextureEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,texture2d, 0)
311
+ assert_equal(texture2d, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT))
312
+ assert_equal(0, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT))
313
+ glFramebufferTextureLayerEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,texture3d, 0,1)
314
+ assert_equal(texture3d, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT))
315
+ assert_equal(0, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT))
316
+ assert_equal(1, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT))
317
+
318
+ glFramebufferTextureFaceEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,texture_cube,0,GL_TEXTURE_CUBE_MAP_POSITIVE_X)
319
+ assert_equal(texture_cube, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT))
320
+ assert_equal(0, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT))
321
+ assert_equal(GL_TEXTURE_CUBE_MAP_POSITIVE_X, glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT))
322
+
323
+ glDeleteTextures([texture2d,texture3d])
324
+ glDeleteFramebuffersEXT(fbo)
325
+ glDeleteProgramsARB(program_id)
326
+ end
327
+
328
+ def test_gl_nv_primitive_restart
329
+ supported?("GL_NV_primitive_restart")
330
+ glBegin(GL_TRIANGLES)
331
+ glPrimitiveRestartNV()
332
+ glEnd
333
+ glPrimitiveRestartIndexNV(2)
334
+ assert_equal(glGetIntegerv(GL_PRIMITIVE_RESTART_INDEX_NV),2)
335
+ end
336
+
337
+ def test_gl_nv_point_sprite
338
+ supported?("GL_NV_point_sprite")
339
+ glPointParameteriNV(GL_POINT_SPRITE_R_MODE_NV, GL_ZERO)
340
+ assert_equal(GL_ZERO, glGetIntegerv(GL_POINT_SPRITE_R_MODE_NV))
341
+ glPointParameteriNV(GL_POINT_SPRITE_R_MODE_NV, GL_S)
342
+ assert_equal(GL_S, glGetIntegerv(GL_POINT_SPRITE_R_MODE_NV))
343
+
344
+ glPointParameterivNV(GL_POINT_SPRITE_R_MODE_NV, [GL_ZERO])
345
+ assert_equal(GL_ZERO, glGetIntegerv(GL_POINT_SPRITE_R_MODE_NV))
346
+ glPointParameterivNV(GL_POINT_SPRITE_R_MODE_NV, [GL_S])
347
+ assert_equal(GL_S, glGetIntegerv(GL_POINT_SPRITE_R_MODE_NV))
348
+ end
349
+ end
@@ -0,0 +1,120 @@
1
+ require 'opengl/test_case'
2
+
3
+ class TestOpenGLBuffer < OpenGL::TestCase
4
+
5
+ def test_class_map
6
+ buffer = glGenBuffers(1).first
7
+
8
+ glBindBuffer GL_ARRAY_BUFFER, buffer
9
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
10
+
11
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_ONLY
12
+ assert_equal 'hello', buf.read(5)
13
+
14
+ ensure
15
+ buf.unmap
16
+ end
17
+
18
+ def test_read_length
19
+ buffer = glGenBuffers(1).first
20
+
21
+ glBindBuffer GL_ARRAY_BUFFER, buffer
22
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
23
+
24
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_ONLY
25
+ assert_equal 'he', buf.read(2)
26
+ ensure
27
+ buf.unmap
28
+ end
29
+
30
+ def test_read_offset
31
+ buffer = glGenBuffers(1).first
32
+
33
+ glBindBuffer GL_ARRAY_BUFFER, buffer
34
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
35
+
36
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_ONLY
37
+ assert_equal 'el', buf.read(2, 1)
38
+ ensure
39
+ buf.unmap
40
+ end
41
+
42
+ def test_read_unbounded
43
+ buffer = glGenBuffers(1).first
44
+
45
+ glBindBuffer GL_ARRAY_BUFFER, buffer
46
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
47
+
48
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_ONLY
49
+
50
+ e = assert_raises ArgumentError do
51
+ buf.read
52
+ end
53
+
54
+ assert_equal 'length must be provided for unbounded buffer', e.message
55
+ ensure
56
+ buf.unmap
57
+ end
58
+
59
+ def test_write
60
+ buffer = glGenBuffers(1).first
61
+
62
+ glBindBuffer GL_ARRAY_BUFFER, buffer
63
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
64
+
65
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_WRITE
66
+
67
+ buf.write 'world'
68
+ assert_equal 'world', buf.read(5)
69
+
70
+ buf.unmap
71
+ assert_equal 'world', glGetBufferSubData(GL_ARRAY_BUFFER, 0, 5)
72
+ ensure
73
+ buf.unmap
74
+ end
75
+
76
+ def test_write_nil
77
+ buffer = glGenBuffers(1).first
78
+
79
+ glBindBuffer GL_ARRAY_BUFFER, buffer
80
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
81
+
82
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_WRITE
83
+
84
+ e = assert_raises ArgumentError do
85
+ buf.write nil
86
+ end
87
+
88
+ assert_equal 'cannot write nil to buffer', e.message
89
+ ensure
90
+ buf.unmap
91
+ end
92
+
93
+ def test_write_offset
94
+ buffer = glGenBuffers(1).first
95
+
96
+ glBindBuffer GL_ARRAY_BUFFER, buffer
97
+ glBufferData GL_ARRAY_BUFFER, 5, 'hello', GL_STREAM_READ
98
+
99
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_WRITE
100
+
101
+ buf.write 'O', 4
102
+ assert_equal 'hellO', buf.read(5)
103
+ ensure
104
+ buf.unmap
105
+ end
106
+
107
+ def test_write_unmapped
108
+ buffer = glGenBuffers(1).first
109
+
110
+ glBindBuffer GL_ARRAY_BUFFER, buffer
111
+
112
+ buf = OpenGL::Buffer.map GL_ARRAY_BUFFER, GL_READ_WRITE
113
+
114
+ e = assert_raises ArgumentError do
115
+ buf.write 'hello'
116
+ end
117
+
118
+ assert_equal 'write to unmapped buffer', e.message
119
+ end
120
+ end