opengl-bindings 1.2.1 → 1.2.2
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.
- checksums.yaml +4 -4
- data/ChangeLog +6 -0
- data/README.md +46 -21
- data/lib/glfw.rb +12 -1
- data/lib/glut.rb +244 -0
- data/lib/opengl_command.rb +5 -2
- data/lib/opengl_enum.rb +6 -2
- data/lib/opengl_ext_command.rb +131 -2
- data/lib/opengl_ext_enum.rb +6 -2
- data/sample/report_env.rb +5 -9
- data/sample/simple.rb +8 -10
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d859718ed8f6ade732fae66f2d3c1dbfee15c2d
|
4
|
+
data.tar.gz: 8f7cda9742fc340c11334026f5ace952548f0d4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3488767d45d010c57b55839e95becb81a6fdaf3c8158856f45ac22628691c415b2d6757e0e661cbc2cfd192de5e7d6b79c506ac53a740a78a829f1d3e2a92157
|
7
|
+
data.tar.gz: 849de0186d2fb4fcceb9184a11ee06236829108efbf9ff73753066dcfb2bb05f4721e4eda774591c072ac9568b2612a976ec5d1e6109674a175247c60d5a1cc9
|
data/ChangeLog
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
2013-09-21 vaiorabbit <https://twitter.com/vaiorabbit>
|
2
|
+
|
3
|
+
* glut.rb: Minimal GLUT wrapper.
|
4
|
+
* sample/GLUT: Added.
|
5
|
+
* glfw.rb, glut.rb (load_dll): Now searches dll/dylib/so from current execution path.
|
6
|
+
|
1
7
|
2013-09-16 vaiorabbit <https://twitter.com/vaiorabbit>
|
2
8
|
|
3
9
|
* lib/glfw.rb (GLFW.create_callback): Now accepts Proc object. (ex.) "method(:key_callback).to_proc".
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
...and wrapper code generator.
|
6
6
|
|
7
7
|
* Created : 2013-08-28
|
8
|
-
* Last modified : 2013-09-
|
8
|
+
* Last modified : 2013-09-21
|
9
9
|
|
10
10
|
|
11
11
|
## Features ##
|
@@ -18,6 +18,17 @@
|
|
18
18
|
* Supports OpenGL 1.0 - 4.4, and all OpenGL extensions.
|
19
19
|
|
20
20
|
|
21
|
+
## How to install ##
|
22
|
+
|
23
|
+
Via RubyGems ( https://rubygems.org/gems/opengl-bindings ):
|
24
|
+
|
25
|
+
$ gem install opengl-bindings
|
26
|
+
|
27
|
+
Or grab all library codes (`lib/*.rb') and use them by adding as one of the load paths like:
|
28
|
+
|
29
|
+
$ ruby -I ./lib your_app.rb
|
30
|
+
|
31
|
+
|
21
32
|
## How to use ##
|
22
33
|
|
23
34
|
See sample/simple.rb.
|
@@ -40,7 +51,10 @@ https://github.com/vaiorabbit/ruby-opengl
|
|
40
51
|
* 'opengl_ext_enum.rb' : OpenGL extension enum wrapper Generated via generator/generate_ext_enum.rb.
|
41
52
|
|
42
53
|
* 'glfw.rb'
|
43
|
-
* My handwirtten GLFW wrapper
|
54
|
+
* My handwirtten GLFW wrapper.
|
55
|
+
|
56
|
+
* 'glut.rb'
|
57
|
+
* Minimal GLUT wrapper.
|
44
58
|
|
45
59
|
* 'glu.rb'
|
46
60
|
* My handwirtten GLU wrapper.
|
@@ -105,7 +119,7 @@ https://github.com/vaiorabbit/ruby-opengl
|
|
105
119
|
|
106
120
|
## Note ##
|
107
121
|
|
108
|
-
* No Ruby-Style handy interfaces are available (like one in the ruby-opengl2 (http://ruby-opengl.rubyforge.org/))
|
122
|
+
* No Ruby-Style handy interfaces are available (like one in the ruby-opengl2 ( http://ruby-opengl.rubyforge.org/ ))
|
109
123
|
* Example:
|
110
124
|
* (Original C API)
|
111
125
|
|
@@ -123,22 +137,17 @@ https://github.com/vaiorabbit/ruby-opengl
|
|
123
137
|
|
124
138
|
tex_name = glGenTextures( 2 )[0]
|
125
139
|
|
126
|
-
* Because:
|
127
|
-
* I don't want to maintain this feature, which makes difficult to auto-generate.
|
128
|
-
* I don't like to modify original OpenGL API.
|
129
|
-
* Thanks to Fiddle, all these C-pointer issue can be simply handled with Array#pack and String#unpack.
|
130
|
-
|
131
140
|
* Reference : Other approaches after ruby-opengl2
|
132
|
-
* OpenGL (opengl3) by davll (https://github.com/davll/ruby-opengl)
|
141
|
+
* OpenGL (opengl3) by davll ( https://github.com/davll/ruby-opengl )
|
133
142
|
* Built on Ruby-FFI, which is useful for JRuby users.
|
134
|
-
* opengl-core by nilium (https://github.com/nilium/ruby-opengl)
|
143
|
+
* opengl-core by nilium ( https://github.com/nilium/ruby-opengl )
|
135
144
|
* Build on Fiddle.
|
136
145
|
* Provides more customize points and handy utilities.
|
137
146
|
|
138
147
|
|
139
148
|
## License ##
|
140
149
|
|
141
|
-
The zlib/libpng License (http://opensource.org/licenses/Zlib).
|
150
|
+
The zlib/libpng License ( http://opensource.org/licenses/Zlib ).
|
142
151
|
|
143
152
|
Copyright (c) 2013 vaiorabbit@twitter.com
|
144
153
|
|
@@ -163,6 +172,9 @@ The zlib/libpng License (http://opensource.org/licenses/Zlib).
|
|
163
172
|
Sample codes/resources under sample/GLExcess are provided under the GNU General
|
164
173
|
Public License version 2. See sample/GLExcess/GPL2.txt .
|
165
174
|
|
175
|
+
Sample codes under sample/OrangeBook are provided under the BSD 3-Clause License.
|
176
|
+
See sample/OrangeBook/3Dlabs-License.txt .
|
177
|
+
|
166
178
|
-------------------------------------------------------------------------------
|
167
179
|
|
168
180
|
# 自前 Ruby-OpenGL と自動生成スクリプト #
|
@@ -173,6 +185,17 @@ Public License version 2. See sample/GLExcess/GPL2.txt .
|
|
173
185
|
* 関数とenumのラッパーコードは Khronos の XML API registry (gl.xml) から自動生成しています
|
174
186
|
|
175
187
|
|
188
|
+
## インストール ##
|
189
|
+
|
190
|
+
RubyGems経由で ( https://rubygems.org/gems/opengl-bindings ):
|
191
|
+
|
192
|
+
$ gem install opengl-bindings
|
193
|
+
|
194
|
+
もしくは lib 以下の *.rb をコピー → その場所をロードパスに加えて次のように起動:
|
195
|
+
|
196
|
+
$ ruby -I ./lib your_app.rb
|
197
|
+
|
198
|
+
|
176
199
|
## 使い方 ##
|
177
200
|
|
178
201
|
sample/simple.rb を参照してください。
|
@@ -195,7 +218,10 @@ https://github.com/vaiorabbit/ruby-opengl
|
|
195
218
|
* 'opengl_ext_enum.rb' : OpenGL 拡張enumのラッパーコード。 generator/generate_ext_enum.rb で自動生成されたものです。
|
196
219
|
|
197
220
|
* 'glfw.rb'
|
198
|
-
* GLFW のラッパーコードです(自動生成ではありません)
|
221
|
+
* GLFW のラッパーコードです(自動生成ではありません)。
|
222
|
+
|
223
|
+
* 'glut.rb'
|
224
|
+
* GLUT ラッパー (よく使う関数限定)
|
199
225
|
|
200
226
|
* 'glu.rb'
|
201
227
|
* GLU のラッパーコードです(自動生成ではありません)。
|
@@ -260,7 +286,7 @@ https://github.com/vaiorabbit/ruby-opengl
|
|
260
286
|
|
261
287
|
## メモ ##
|
262
288
|
|
263
|
-
* Rubyスタイルの便利なインターフェースはサポートしていません (ruby-opengl2 (http://ruby-opengl.rubyforge.org/) にあったような感じのもの)
|
289
|
+
* Rubyスタイルの便利なインターフェースはサポートしていません (ruby-opengl2 ( http://ruby-opengl.rubyforge.org/ ) にあったような感じのもの)
|
264
290
|
* 例:
|
265
291
|
* (OpenGLオリジナルの C API)
|
266
292
|
|
@@ -278,22 +304,21 @@ https://github.com/vaiorabbit/ruby-opengl
|
|
278
304
|
|
279
305
|
tex_name = glGenTextures( 2 )[0] # glGenTextures が配列を返すように修正されています
|
280
306
|
|
281
|
-
* なぜサポートしないのか:
|
282
|
-
* 面倒。自動生成になじまない。
|
283
|
-
* OpenGL オリジナルの API を変更するのは個人的に嫌。
|
284
|
-
* この手の C ポインタ関連の問題はすべて Array#pack と String#unpack だけで簡単に解決できます (Fiddleのおかげ)。
|
285
|
-
|
286
307
|
* 参考 : ruby-opengl2 以降に出てきたその他のアプローチ
|
287
|
-
* OpenGL (opengl3) by davll (https://github.com/davll/ruby-opengl)
|
308
|
+
* OpenGL (opengl3) by davll ( https://github.com/davll/ruby-opengl )
|
288
309
|
* Ruby-FFI を利用 ⇒ JRuby でも使えるようです
|
289
|
-
* opengl-core by nilium (https://github.com/nilium/ruby-opengl)
|
310
|
+
* opengl-core by nilium ( https://github.com/nilium/ruby-opengl )
|
290
311
|
* Fiddle を利用
|
291
312
|
* カスタマイズポイント・ユーティリティがこのライブラリよりも揃ってます
|
292
313
|
|
293
314
|
|
294
315
|
## ライセンス ##
|
295
316
|
|
296
|
-
* zlib/libpng ライセンスです (http://opensource.org/licenses/Zlib)。
|
317
|
+
* zlib/libpng ライセンスです ( http://opensource.org/licenses/Zlib )。
|
297
318
|
|
298
319
|
* sample/GLExcess 以下にあるものについては GNU General Public License version 2 です。
|
299
320
|
sample/GLExcess/GPL2.txt を参照してください。
|
321
|
+
|
322
|
+
* sample/OrangeBook 以下にあるものについては修正BSDライセンスです。
|
323
|
+
sample/OrangeBook/3Dlabs-License.txt を参照してください。
|
324
|
+
|
data/lib/glfw.rb
CHANGED
@@ -310,7 +310,18 @@ module GLFW
|
|
310
310
|
@@glfw_import_done = false
|
311
311
|
|
312
312
|
# Load native library.
|
313
|
-
def self.load_dll(lib =
|
313
|
+
def self.load_dll(lib = nil, path = nil)
|
314
|
+
if lib == nil && path == nil
|
315
|
+
case OpenGL.get_platform
|
316
|
+
when :OPENGL_PLATFORM_WINDOWS
|
317
|
+
lib, path = 'GLFW3.dll', Dir.pwd
|
318
|
+
when :OPENGL_PLATFORM_MACOSX
|
319
|
+
lib, path = 'libglfw.dylib', Dir.pwd
|
320
|
+
else
|
321
|
+
lib, path = 'libglfw.so', Dir.pwd
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
314
325
|
dlload (path + '/' + lib)
|
315
326
|
import_symbols() unless @@glfw_import_done
|
316
327
|
end
|
data/lib/glut.rb
ADDED
@@ -0,0 +1,244 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'fiddle/import'
|
3
|
+
require_relative 'opengl_platform'
|
4
|
+
|
5
|
+
module GLUT
|
6
|
+
|
7
|
+
extend Fiddle::Importer
|
8
|
+
|
9
|
+
#
|
10
|
+
# Fiddle's default 'extern' stores all methods into local variable '@func_map', that makes difficult to 'include GLUT'.
|
11
|
+
# So I override it and replace '@func_map' into 'GLUT_FUNCTIONS_MAP'.
|
12
|
+
# Ref.: /lib/ruby/2.0.0/fiddle/import.rb
|
13
|
+
#
|
14
|
+
GLUT_FUNCTIONS_MAP = {}
|
15
|
+
def self.extern(signature, *opts)
|
16
|
+
symname, ctype, argtype = parse_signature(signature, @type_alias)
|
17
|
+
opt = parse_bind_options(opts)
|
18
|
+
f = import_function(symname, ctype, argtype, opt[:call_type])
|
19
|
+
name = symname.gsub(/@.+/,'')
|
20
|
+
GLUT_FUNCTIONS_MAP[name] = f
|
21
|
+
begin
|
22
|
+
/^(.+?):(\d+)/ =~ caller.first
|
23
|
+
file, line = $1, $2.to_i
|
24
|
+
rescue
|
25
|
+
file, line = __FILE__, __LINE__+3
|
26
|
+
end
|
27
|
+
args_str="*args"
|
28
|
+
module_eval(<<-EOS, file, line)
|
29
|
+
def #{name}(*args, &block)
|
30
|
+
GLUT_FUNCTIONS_MAP['#{name}'].call(*args,&block)
|
31
|
+
end
|
32
|
+
EOS
|
33
|
+
module_function(name)
|
34
|
+
f
|
35
|
+
end
|
36
|
+
|
37
|
+
# defines
|
38
|
+
GLUT_KEY_F1 = 0x0001
|
39
|
+
GLUT_KEY_F2 = 0x0002
|
40
|
+
GLUT_KEY_F3 = 0x0003
|
41
|
+
GLUT_KEY_F4 = 0x0004
|
42
|
+
GLUT_KEY_F5 = 0x0005
|
43
|
+
GLUT_KEY_F6 = 0x0006
|
44
|
+
GLUT_KEY_F7 = 0x0007
|
45
|
+
GLUT_KEY_F8 = 0x0008
|
46
|
+
GLUT_KEY_F9 = 0x0009
|
47
|
+
GLUT_KEY_F10 = 0x000A
|
48
|
+
GLUT_KEY_F11 = 0x000B
|
49
|
+
GLUT_KEY_F12 = 0x000C
|
50
|
+
GLUT_KEY_LEFT = 0x0064
|
51
|
+
GLUT_KEY_UP = 0x0065
|
52
|
+
GLUT_KEY_RIGHT = 0x0066
|
53
|
+
GLUT_KEY_DOWN = 0x0067
|
54
|
+
GLUT_KEY_PAGE_UP = 0x0068
|
55
|
+
GLUT_KEY_PAGE_DOWN = 0x0069
|
56
|
+
GLUT_KEY_HOME = 0x006A
|
57
|
+
GLUT_KEY_END = 0x006B
|
58
|
+
GLUT_KEY_INSERT = 0x006C
|
59
|
+
|
60
|
+
GLUT_LEFT_BUTTON = 0x0000
|
61
|
+
GLUT_MIDDLE_BUTTON = 0x0001
|
62
|
+
GLUT_RIGHT_BUTTON = 0x0002
|
63
|
+
GLUT_DOWN = 0x0000
|
64
|
+
GLUT_UP = 0x0001
|
65
|
+
GLUT_LEFT = 0x0000
|
66
|
+
GLUT_ENTERED = 0x0001
|
67
|
+
|
68
|
+
GLUT_RGB = 0x0000
|
69
|
+
GLUT_RGBA = 0x0000
|
70
|
+
GLUT_INDEX = 0x0001
|
71
|
+
GLUT_SINGLE = 0x0000
|
72
|
+
GLUT_DOUBLE = 0x0002
|
73
|
+
GLUT_ACCUM = 0x0004
|
74
|
+
GLUT_ALPHA = 0x0008
|
75
|
+
GLUT_DEPTH = 0x0010
|
76
|
+
GLUT_STENCIL = 0x0020
|
77
|
+
GLUT_MULTISAMPLE = 0x0080
|
78
|
+
GLUT_STEREO = 0x0100
|
79
|
+
GLUT_LUMINANCE = 0x0200
|
80
|
+
|
81
|
+
GLUT_MENU_NOT_IN_USE = 0x0000
|
82
|
+
GLUT_MENU_IN_USE = 0x0001
|
83
|
+
GLUT_NOT_VISIBLE = 0x0000
|
84
|
+
GLUT_VISIBLE = 0x0001
|
85
|
+
GLUT_HIDDEN = 0x0000
|
86
|
+
GLUT_FULLY_RETAINED = 0x0001
|
87
|
+
GLUT_PARTIALLY_RETAINED = 0x0002
|
88
|
+
GLUT_FULLY_COVERED = 0x0003
|
89
|
+
|
90
|
+
# typedefs
|
91
|
+
@@glut_cb_signature = {
|
92
|
+
:GLUTMenuFunc => "void GLUTMenuFunc(int)",
|
93
|
+
:GLUTDisplayFunc => "void GLUTDisplayFunc()",
|
94
|
+
:GLUTReshapeFunc => "void GLUTReshapeFunc(int, int)",
|
95
|
+
:GLUTKeyboardFunc => "void GLUTKeyboardFunc(unsigned char, int, int)",
|
96
|
+
:GLUTMouseFunc => "void GLUTMouseFunc(int, int, int, int)",
|
97
|
+
:GLUTMotionFunc => "void GLUTMotionFunc(int, int)",
|
98
|
+
:GLUTPassiveMotionFunc => "void GLUTPassiveMotionFunc(int x, int y)",
|
99
|
+
:GLUTEntryFunc => "void GLUTEntryFunc(int)",
|
100
|
+
:GLUTVisibilityFunc => "void GLUTVisibilityFunc(int)",
|
101
|
+
:GLUTIdleFunc => "void GLUTIdleFunc()",
|
102
|
+
:GLUTTimerFunc => "void GLUTTimerFunc(int)",
|
103
|
+
:GLUTMenuStateFunc => "void GLUTMenuStateFunc(int)",
|
104
|
+
:GLUTSpecialFunc => "void GLUTSpecialFunc(int, int, int)",
|
105
|
+
:GLUTMenuStatusFunc => "void GLUTMenuStatusFunc(int, int, int)",
|
106
|
+
}
|
107
|
+
|
108
|
+
def self.create_callback( sym, proc=nil, &blk )
|
109
|
+
if block_given?
|
110
|
+
return bind( @@glut_cb_signature[sym], nil, &blk )
|
111
|
+
else
|
112
|
+
return bind( @@glut_cb_signature[sym], nil, &proc )
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
@@glut_import_done = false
|
117
|
+
|
118
|
+
# Load native library.
|
119
|
+
def self.load_dll(lib = nil, path = nil)
|
120
|
+
if lib == nil && path == nil
|
121
|
+
case OpenGL.get_platform
|
122
|
+
when :OPENGL_PLATFORM_WINDOWS
|
123
|
+
lib, path = 'freeglut.dll', Dir.pwd
|
124
|
+
when :OPENGL_PLATFORM_MACOSX
|
125
|
+
lib, path = 'GLUT', '/System/Library/Frameworks/GLUT.framework'
|
126
|
+
else
|
127
|
+
lib, path = 'libglut.so', Dir.pwd
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
dlload (path + '/' + lib)
|
132
|
+
import_symbols() unless @@glut_import_done
|
133
|
+
end
|
134
|
+
|
135
|
+
def self.import_symbols
|
136
|
+
# defines
|
137
|
+
if OpenGL.get_platform == :OPENGL_PLATFORM_WINDOWS
|
138
|
+
const_set('GLUT_STROKE_ROMAN', Fiddle::Pointer.new(0x0000) )
|
139
|
+
const_set('GLUT_STROKE_MONO_ROMAN', Fiddle::Pointer.new(0x0001) )
|
140
|
+
const_set('GLUT_BITMAP_9_BY_15', Fiddle::Pointer.new(0x0002) )
|
141
|
+
const_set('GLUT_BITMAP_8_BY_13', Fiddle::Pointer.new(0x0003) )
|
142
|
+
const_set('GLUT_BITMAP_TIMES_ROMAN_10', Fiddle::Pointer.new(0x0004) )
|
143
|
+
const_set('GLUT_BITMAP_TIMES_ROMAN_24', Fiddle::Pointer.new(0x0005) )
|
144
|
+
const_set('GLUT_BITMAP_HELVETICA_10', Fiddle::Pointer.new(0x0006) )
|
145
|
+
const_set('GLUT_BITMAP_HELVETICA_12', Fiddle::Pointer.new(0x0007) )
|
146
|
+
const_set('GLUT_BITMAP_HELVETICA_18', Fiddle::Pointer.new(0x0008) )
|
147
|
+
else
|
148
|
+
const_set('GLUT_STROKE_ROMAN', import_symbol("glutStrokeRoman") )
|
149
|
+
const_set('GLUT_STROKE_MONO_ROMAN', import_symbol("glutStrokeMonoRoman") )
|
150
|
+
const_set('GLUT_BITMAP_9_BY_15', import_symbol("glutBitmap9By15") )
|
151
|
+
const_set('GLUT_BITMAP_8_BY_13', import_symbol("glutBitmap8By13") )
|
152
|
+
const_set('GLUT_BITMAP_TIMES_ROMAN_10', import_symbol("glutBitmapTimesRoman10") )
|
153
|
+
const_set('GLUT_BITMAP_TIMES_ROMAN_24', import_symbol("glutBitmapTimesRoman24") )
|
154
|
+
const_set('GLUT_BITMAP_HELVETICA_10', import_symbol("glutBitmapHelvetica10") )
|
155
|
+
const_set('GLUT_BITMAP_HELVETICA_12', import_symbol("glutBitmapHelvetica12") )
|
156
|
+
const_set('GLUT_BITMAP_HELVETICA_18', import_symbol("glutBitmapHelvetica18") )
|
157
|
+
end
|
158
|
+
|
159
|
+
# function
|
160
|
+
extern 'void glutInit(int*, char**)'
|
161
|
+
extern 'void glutInitDisplayMode(unsigned int)'
|
162
|
+
|
163
|
+
extern 'void glutInitWindowPosition(int, int)'
|
164
|
+
extern 'void glutInitWindowSize(int, int)'
|
165
|
+
extern 'void glutMainLoop()'
|
166
|
+
|
167
|
+
extern 'int glutCreateWindow(const char *)'
|
168
|
+
extern 'int glutCreateSubWindow(int, int, int, int, int)'
|
169
|
+
extern 'void glutDestroyWindow(int)'
|
170
|
+
extern 'void glutPostRedisplay()'
|
171
|
+
|
172
|
+
extern 'void glutSwapBuffers()'
|
173
|
+
extern 'int glutGetWindow()'
|
174
|
+
extern 'void glutSetWindow(int)'
|
175
|
+
extern 'void glutSetWindowTitle(const char *)'
|
176
|
+
extern 'void glutSetIconTitle(const char *)'
|
177
|
+
extern 'void glutPositionWindow(int, int)'
|
178
|
+
extern 'void glutReshapeWindow(int, int)'
|
179
|
+
extern 'void glutPopWindow()'
|
180
|
+
extern 'void glutPushWindow()'
|
181
|
+
extern 'void glutIconifyWindow()'
|
182
|
+
extern 'void glutShowWindow()'
|
183
|
+
extern 'void glutHideWindow()'
|
184
|
+
|
185
|
+
extern 'int glutCreateMenu(void *)'
|
186
|
+
extern 'void glutDestroyMenu(int)'
|
187
|
+
extern 'int glutGetMenu()'
|
188
|
+
extern 'void glutSetMenu(int)'
|
189
|
+
extern 'void glutAddMenuEntry(const char *, int)'
|
190
|
+
extern 'void glutAddSubMenu(const char *, int)'
|
191
|
+
extern 'void glutChangeToMenuEntry(int, const char *, int)'
|
192
|
+
extern 'void glutChangeToSubMenu(int, const char *, int)'
|
193
|
+
extern 'void glutRemoveMenuItem(int)'
|
194
|
+
extern 'void glutAttachMenu(int)'
|
195
|
+
extern 'void glutDetachMenu(int)'
|
196
|
+
|
197
|
+
extern 'void glutTimerFunc(unsigned int, void *)'
|
198
|
+
extern 'void glutIdleFunc(void *)'
|
199
|
+
extern 'void glutDisplayFunc(void *)'
|
200
|
+
extern 'void glutReshapeFunc(void *)'
|
201
|
+
extern 'void glutKeyboardFunc(void *)'
|
202
|
+
extern 'void glutMouseFunc(void *)'
|
203
|
+
extern 'void glutMotionFunc(void *)'
|
204
|
+
extern 'void glutPassiveMotionFunc(void *)'
|
205
|
+
extern 'void glutEntryFunc(void *)'
|
206
|
+
extern 'void glutVisibilityFunc(void *)'
|
207
|
+
extern 'void glutIdleFunc(void *)'
|
208
|
+
extern 'void glutTimerFunc(unsigned int, void *, int)'
|
209
|
+
extern 'void glutMenuStateFunc(void *)'
|
210
|
+
extern 'void glutSpecialFunc(void *)'
|
211
|
+
extern 'void glutMenuStatusFunc(void*)'
|
212
|
+
extern 'int glutGet(unsigned int)'
|
213
|
+
extern 'int glutDeviceGet(unsigned int)'
|
214
|
+
|
215
|
+
extern 'int glutExtensionSupported(const char *)'
|
216
|
+
|
217
|
+
extern 'void glutBitmapCharacter(void *, int)'
|
218
|
+
extern 'int glutBitmapWidth(void *, int)'
|
219
|
+
extern 'void glutStrokeCharacter(void *, int)'
|
220
|
+
extern 'int glutStrokeWidth(void *, int)'
|
221
|
+
|
222
|
+
extern 'void glutWireSphere(double, int, int)'
|
223
|
+
extern 'void glutSolidSphere(double, int, int)'
|
224
|
+
extern 'void glutWireCone(double, double, int, int)'
|
225
|
+
extern 'void glutSolidCone(double, double, int, int)'
|
226
|
+
extern 'void glutWireCube(double)'
|
227
|
+
extern 'void glutSolidCube(double)'
|
228
|
+
extern 'void glutWireTorus(double, double, int, int)'
|
229
|
+
extern 'void glutSolidTorus(double, double, int, int)'
|
230
|
+
extern 'void glutWireDodecahedron()'
|
231
|
+
extern 'void glutSolidDodecahedron()'
|
232
|
+
extern 'void glutWireTeapot(double)'
|
233
|
+
extern 'void glutSolidTeapot(double)'
|
234
|
+
extern 'void glutWireOctahedron()'
|
235
|
+
extern 'void glutSolidOctahedron()'
|
236
|
+
extern 'void glutWireTetrahedron()'
|
237
|
+
extern 'void glutSolidTetrahedron()'
|
238
|
+
extern 'void glutWireIcosahedron()'
|
239
|
+
extern 'void glutSolidIcosahedron()'
|
240
|
+
|
241
|
+
@@glut_import_done = true
|
242
|
+
end
|
243
|
+
|
244
|
+
end
|
data/lib/opengl_command.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# opengl-bindings
|
2
|
+
# * http://rubygems.org/gems/opengl-bindings
|
3
|
+
# * http://github.com/vaiorabbit/ruby-opengl
|
4
|
+
#
|
5
|
+
# [NOTICE] This is an automatically generated file.
|
3
6
|
|
4
7
|
require 'fiddle'
|
5
8
|
|
data/lib/opengl_enum.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# opengl-bindings
|
2
|
+
# * http://rubygems.org/gems/opengl-bindings
|
3
|
+
# * http://github.com/vaiorabbit/ruby-opengl
|
4
|
+
#
|
5
|
+
# [NOTICE] This is an automatically generated file.
|
3
6
|
|
4
7
|
module OpenGL
|
5
8
|
|
@@ -1707,6 +1710,7 @@ module OpenGL
|
|
1707
1710
|
GL_DISPLAY_LIST = 0x82E7
|
1708
1711
|
GL_MAX_VERTEX_ATTRIB_STRIDE = 0x82E5
|
1709
1712
|
GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221
|
1713
|
+
GL_TEXTURE_BUFFER_BINDING = 0x8C2A
|
1710
1714
|
GL_MAP_PERSISTENT_BIT = 0x0040
|
1711
1715
|
GL_MAP_COHERENT_BIT = 0x0080
|
1712
1716
|
GL_DYNAMIC_STORAGE_BIT = 0x0100
|
data/lib/opengl_ext_command.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# opengl-bindings
|
2
|
+
# * http://rubygems.org/gems/opengl-bindings
|
3
|
+
# * http://github.com/vaiorabbit/ruby-opengl
|
4
|
+
#
|
5
|
+
# [NOTICE] This is an automatically generated file.
|
3
6
|
|
4
7
|
require 'fiddle'
|
5
8
|
|
@@ -11846,6 +11849,132 @@ module OpenGL
|
|
11846
11849
|
f.call(_pipeline_)
|
11847
11850
|
end
|
11848
11851
|
SRC_GL_EXT_separate_shader_objects
|
11852
|
+
|
11853
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform1uiEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_INT]
|
11854
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform1uiEXT] = Fiddle::TYPE_VOID
|
11855
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11856
|
+
def glProgramUniform1uiEXT(_program_, _location_, _v0_)
|
11857
|
+
f = OpenGL::get_command(:glProgramUniform1uiEXT)
|
11858
|
+
f.call(_program_, _location_, _v0_)
|
11859
|
+
end
|
11860
|
+
SRC_GL_EXT_separate_shader_objects
|
11861
|
+
|
11862
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform2uiEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT]
|
11863
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform2uiEXT] = Fiddle::TYPE_VOID
|
11864
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11865
|
+
def glProgramUniform2uiEXT(_program_, _location_, _v0_, _v1_)
|
11866
|
+
f = OpenGL::get_command(:glProgramUniform2uiEXT)
|
11867
|
+
f.call(_program_, _location_, _v0_, _v1_)
|
11868
|
+
end
|
11869
|
+
SRC_GL_EXT_separate_shader_objects
|
11870
|
+
|
11871
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform3uiEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT]
|
11872
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform3uiEXT] = Fiddle::TYPE_VOID
|
11873
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11874
|
+
def glProgramUniform3uiEXT(_program_, _location_, _v0_, _v1_, _v2_)
|
11875
|
+
f = OpenGL::get_command(:glProgramUniform3uiEXT)
|
11876
|
+
f.call(_program_, _location_, _v0_, _v1_, _v2_)
|
11877
|
+
end
|
11878
|
+
SRC_GL_EXT_separate_shader_objects
|
11879
|
+
|
11880
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform4uiEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT]
|
11881
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform4uiEXT] = Fiddle::TYPE_VOID
|
11882
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11883
|
+
def glProgramUniform4uiEXT(_program_, _location_, _v0_, _v1_, _v2_, _v3_)
|
11884
|
+
f = OpenGL::get_command(:glProgramUniform4uiEXT)
|
11885
|
+
f.call(_program_, _location_, _v0_, _v1_, _v2_, _v3_)
|
11886
|
+
end
|
11887
|
+
SRC_GL_EXT_separate_shader_objects
|
11888
|
+
|
11889
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform1uivEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
|
11890
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform1uivEXT] = Fiddle::TYPE_VOID
|
11891
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11892
|
+
def glProgramUniform1uivEXT(_program_, _location_, _count_, _value_)
|
11893
|
+
f = OpenGL::get_command(:glProgramUniform1uivEXT)
|
11894
|
+
f.call(_program_, _location_, _count_, _value_)
|
11895
|
+
end
|
11896
|
+
SRC_GL_EXT_separate_shader_objects
|
11897
|
+
|
11898
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform2uivEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
|
11899
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform2uivEXT] = Fiddle::TYPE_VOID
|
11900
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11901
|
+
def glProgramUniform2uivEXT(_program_, _location_, _count_, _value_)
|
11902
|
+
f = OpenGL::get_command(:glProgramUniform2uivEXT)
|
11903
|
+
f.call(_program_, _location_, _count_, _value_)
|
11904
|
+
end
|
11905
|
+
SRC_GL_EXT_separate_shader_objects
|
11906
|
+
|
11907
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform3uivEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
|
11908
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform3uivEXT] = Fiddle::TYPE_VOID
|
11909
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11910
|
+
def glProgramUniform3uivEXT(_program_, _location_, _count_, _value_)
|
11911
|
+
f = OpenGL::get_command(:glProgramUniform3uivEXT)
|
11912
|
+
f.call(_program_, _location_, _count_, _value_)
|
11913
|
+
end
|
11914
|
+
SRC_GL_EXT_separate_shader_objects
|
11915
|
+
|
11916
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniform4uivEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
|
11917
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniform4uivEXT] = Fiddle::TYPE_VOID
|
11918
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11919
|
+
def glProgramUniform4uivEXT(_program_, _location_, _count_, _value_)
|
11920
|
+
f = OpenGL::get_command(:glProgramUniform4uivEXT)
|
11921
|
+
f.call(_program_, _location_, _count_, _value_)
|
11922
|
+
end
|
11923
|
+
SRC_GL_EXT_separate_shader_objects
|
11924
|
+
|
11925
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniformMatrix2x3fvEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_CHAR, Fiddle::TYPE_VOIDP]
|
11926
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniformMatrix2x3fvEXT] = Fiddle::TYPE_VOID
|
11927
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11928
|
+
def glProgramUniformMatrix2x3fvEXT(_program_, _location_, _count_, _transpose_, _value_)
|
11929
|
+
f = OpenGL::get_command(:glProgramUniformMatrix2x3fvEXT)
|
11930
|
+
f.call(_program_, _location_, _count_, _transpose_, _value_)
|
11931
|
+
end
|
11932
|
+
SRC_GL_EXT_separate_shader_objects
|
11933
|
+
|
11934
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniformMatrix3x2fvEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_CHAR, Fiddle::TYPE_VOIDP]
|
11935
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniformMatrix3x2fvEXT] = Fiddle::TYPE_VOID
|
11936
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11937
|
+
def glProgramUniformMatrix3x2fvEXT(_program_, _location_, _count_, _transpose_, _value_)
|
11938
|
+
f = OpenGL::get_command(:glProgramUniformMatrix3x2fvEXT)
|
11939
|
+
f.call(_program_, _location_, _count_, _transpose_, _value_)
|
11940
|
+
end
|
11941
|
+
SRC_GL_EXT_separate_shader_objects
|
11942
|
+
|
11943
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniformMatrix2x4fvEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_CHAR, Fiddle::TYPE_VOIDP]
|
11944
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniformMatrix2x4fvEXT] = Fiddle::TYPE_VOID
|
11945
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11946
|
+
def glProgramUniformMatrix2x4fvEXT(_program_, _location_, _count_, _transpose_, _value_)
|
11947
|
+
f = OpenGL::get_command(:glProgramUniformMatrix2x4fvEXT)
|
11948
|
+
f.call(_program_, _location_, _count_, _transpose_, _value_)
|
11949
|
+
end
|
11950
|
+
SRC_GL_EXT_separate_shader_objects
|
11951
|
+
|
11952
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniformMatrix4x2fvEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_CHAR, Fiddle::TYPE_VOIDP]
|
11953
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniformMatrix4x2fvEXT] = Fiddle::TYPE_VOID
|
11954
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11955
|
+
def glProgramUniformMatrix4x2fvEXT(_program_, _location_, _count_, _transpose_, _value_)
|
11956
|
+
f = OpenGL::get_command(:glProgramUniformMatrix4x2fvEXT)
|
11957
|
+
f.call(_program_, _location_, _count_, _transpose_, _value_)
|
11958
|
+
end
|
11959
|
+
SRC_GL_EXT_separate_shader_objects
|
11960
|
+
|
11961
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniformMatrix3x4fvEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_CHAR, Fiddle::TYPE_VOIDP]
|
11962
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniformMatrix3x4fvEXT] = Fiddle::TYPE_VOID
|
11963
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11964
|
+
def glProgramUniformMatrix3x4fvEXT(_program_, _location_, _count_, _transpose_, _value_)
|
11965
|
+
f = OpenGL::get_command(:glProgramUniformMatrix3x4fvEXT)
|
11966
|
+
f.call(_program_, _location_, _count_, _transpose_, _value_)
|
11967
|
+
end
|
11968
|
+
SRC_GL_EXT_separate_shader_objects
|
11969
|
+
|
11970
|
+
GL_FUNCTIONS_ARGS_MAP[:glProgramUniformMatrix4x3fvEXT] = [-Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, -Fiddle::TYPE_CHAR, Fiddle::TYPE_VOIDP]
|
11971
|
+
GL_FUNCTIONS_RETVAL_MAP[:glProgramUniformMatrix4x3fvEXT] = Fiddle::TYPE_VOID
|
11972
|
+
module_eval(<<-SRC_GL_EXT_separate_shader_objects)
|
11973
|
+
def glProgramUniformMatrix4x3fvEXT(_program_, _location_, _count_, _transpose_, _value_)
|
11974
|
+
f = OpenGL::get_command(:glProgramUniformMatrix4x3fvEXT)
|
11975
|
+
f.call(_program_, _location_, _count_, _transpose_, _value_)
|
11976
|
+
end
|
11977
|
+
SRC_GL_EXT_separate_shader_objects
|
11849
11978
|
end # define_command_GL_EXT_separate_shader_objects
|
11850
11979
|
|
11851
11980
|
def define_command_GL_EXT_separate_specular_color
|
data/lib/opengl_ext_enum.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# opengl-bindings
|
2
|
+
# * http://rubygems.org/gems/opengl-bindings
|
3
|
+
# * http://github.com/vaiorabbit/ruby-opengl
|
4
|
+
#
|
5
|
+
# [NOTICE] This is an automatically generated file.
|
3
6
|
|
4
7
|
module OpenGL
|
5
8
|
|
@@ -206,6 +209,7 @@ module OpenGL
|
|
206
209
|
const_set('GL_RGB_422_APPLE', 0x8A1F) unless defined?(GL_RGB_422_APPLE)
|
207
210
|
const_set('GL_UNSIGNED_SHORT_8_8_APPLE', 0x85BA) unless defined?(GL_UNSIGNED_SHORT_8_8_APPLE)
|
208
211
|
const_set('GL_UNSIGNED_SHORT_8_8_REV_APPLE', 0x85BB) unless defined?(GL_UNSIGNED_SHORT_8_8_REV_APPLE)
|
212
|
+
const_set('GL_RGB_RAW_422_APPLE', 0x8A51) unless defined?(GL_RGB_RAW_422_APPLE)
|
209
213
|
end # define_enum_GL_APPLE_rgb_422
|
210
214
|
|
211
215
|
def define_enum_GL_APPLE_row_bytes
|
data/sample/report_env.rb
CHANGED
@@ -1,17 +1,12 @@
|
|
1
|
-
require 'glfw'
|
2
1
|
require 'opengl'
|
2
|
+
require 'glfw'
|
3
|
+
|
4
|
+
OpenGL.load_dll()
|
5
|
+
GLFW.load_dll()
|
3
6
|
|
4
7
|
include OpenGL
|
5
8
|
include GLFW
|
6
9
|
|
7
|
-
OpenGL.load_dll()
|
8
|
-
case OpenGL.get_platform
|
9
|
-
when :OPENGL_PLATFORM_WINDOWS
|
10
|
-
GLFW.load_dll('glfw3.dll', '.')
|
11
|
-
when :OPENGL_PLATFORM_MACOSX
|
12
|
-
GLFW.load_dll('libglfw.dylib', '.')
|
13
|
-
end
|
14
|
-
|
15
10
|
if __FILE__ == $0
|
16
11
|
glfwInit()
|
17
12
|
window = glfwCreateWindow( 100, 100, "Report OpenGL Environment", nil, nil )
|
@@ -19,5 +14,6 @@ if __FILE__ == $0
|
|
19
14
|
puts "Version: #{glGetString(GL_VERSION).to_s}"
|
20
15
|
puts "Extensions:"
|
21
16
|
puts glGetString(GL_EXTENSIONS).to_s.split(/ /)
|
17
|
+
glfwDestroyWindow( window )
|
22
18
|
glfwTerminate()
|
23
19
|
end
|
data/sample/simple.rb
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
+
#
|
2
|
+
# For more samples, visit https://github.com/vaiorabbit/ruby-opengl/tree/master/sample .
|
3
|
+
#
|
1
4
|
# Ref.: /glfw-3.0.1/examples/simple.c
|
2
|
-
|
5
|
+
#
|
3
6
|
require 'opengl'
|
4
|
-
|
5
|
-
include GLFW
|
6
|
-
include OpenGL
|
7
|
+
require 'glfw'
|
7
8
|
|
8
9
|
OpenGL.load_dll()
|
10
|
+
GLFW.load_dll()
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
GLFW.load_dll('glfw3.dll', '.')
|
13
|
-
when :OPENGL_PLATFORM_MACOSX
|
14
|
-
GLFW.load_dll('libglfw.dylib', '.')
|
15
|
-
end
|
12
|
+
include OpenGL
|
13
|
+
include GLFW
|
16
14
|
|
17
15
|
# Press ESC to exit.
|
18
16
|
key_callback = GLFW::create_callback(:GLFWkeyfun) do |window_handle, key, scancode, action, mods|
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opengl-bindings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaiorabbit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Ruby bindings for OpenGL 1.0-4.4 and all extensions using Fiddle (For MRI >= 2.0.0).
|
15
|
+
For more information, please visit: http://github.com/vaiorabbit/ruby-opengl
|
15
16
|
email:
|
16
17
|
- vaiorabbit@gmail.com
|
17
18
|
executables: []
|
@@ -20,6 +21,7 @@ extra_rdoc_files: []
|
|
20
21
|
files:
|
21
22
|
- lib/glfw.rb
|
22
23
|
- lib/glu.rb
|
24
|
+
- lib/glut.rb
|
23
25
|
- lib/opengl.rb
|
24
26
|
- lib/opengl_command.rb
|
25
27
|
- lib/opengl_common.rb
|
@@ -56,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
58
|
version: '0'
|
57
59
|
requirements: []
|
58
60
|
rubyforge_project:
|
59
|
-
rubygems_version: 2.
|
61
|
+
rubygems_version: 2.1.4
|
60
62
|
signing_key:
|
61
63
|
specification_version: 4
|
62
64
|
summary: Bindings for OpenGL 1.0-4.4 and extensions (For MRI >= 2.0.0)
|