opengl-bindings 1.5.3 → 1.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d1181366105ac620b6d2bf3ac88f35b12e679b4
4
- data.tar.gz: 6af43be448019a8dde0760bc21c0006236b62262
3
+ metadata.gz: 5fb7f2c48167f3a254b85696ee20f6a0fa536bf1
4
+ data.tar.gz: 74fc8b5851ada1b1e17351ada899ba179eb766a1
5
5
  SHA512:
6
- metadata.gz: a53565b006f89a468591682d380180eae80943e73d833a2052fd32309c6849d3ee34f02b6a0f7680e4f2f1397ba53b480ff4c4b5f122cb30bdd748b6815eff60
7
- data.tar.gz: e25ea1bb3898eb82b58aaa1c6a33a47e14af4cf25a33101191d282235ab659d2d1510c79ad38a4d98c63ae98dbc159e76c35fdd20ae43e8fe8869476c9bc3605
6
+ metadata.gz: d08b27e050d05feb3b9dec504fdd2b80ac67f5fdde4590c44008338b875a2ac85ebf1cd705bd4dce8cec7b4b6def560c7b7e68a9e3244e6d20cbd2a546850c06
7
+ data.tar.gz: 34a01c564079675ab602ad9ac3147ef3e63be6470614e067dcba3dea413975a3c7f2b95b0229d8afb45afefc64420ac05a3afe89d9f7b5555cc5a7e9e0fd3c51
data/ChangeLog CHANGED
@@ -1,3 +1,68 @@
1
+ 2016-06-03 vaiorabbit <http://twitter.com/vaiorabbit>
2
+
3
+ * opengl-bindings.gemspec: Fixed invalid license value (zlib/libpng -> Zlib). See http://spdx.org/licenses .
4
+ * sample/glfw32_build_dylib.sh: GLFW 3.2 build script for Mac OS X.
5
+
6
+ 2016-06-01 vaiorabbit <http://twitter.com/vaiorabbit>
7
+
8
+ * Updated using latest gl.xml.
9
+
10
+ 2016-05-26 vaiorabbit <http://twitter.com/vaiorabbit>
11
+
12
+ * Updated using latest gl.xml.
13
+
14
+ 2016-05-05 vaiorabbit <http://twitter.com/vaiorabbit>
15
+
16
+ * glfw.rb: Added GLFW 3.2 features.
17
+
18
+ 2016-04-22 vaiorabbit <http://twitter.com/vaiorabbit>
19
+
20
+ * sample/Gosu/lesson01.rb: Added.
21
+
22
+ 2016-04-20 vaiorabbit <http://twitter.com/vaiorabbit>
23
+
24
+ * Updated using latest gl.xml.
25
+
26
+ 2016-04-12 vaiorabbit <http://twitter.com/vaiorabbit>
27
+
28
+ * Updated using latest gl.xml.
29
+ * lib/glfw.rb: Now usable for GLFW 3.0, 3.1 and 3.2.
30
+ * lib/glfw30.rb, lib/glfw31.rb, lib/glfw32.rb: Removed.
31
+
32
+ 2016-04-11 vaiorabbit <http://twitter.com/vaiorabbit>
33
+
34
+ * Updated using latest gl.xml.
35
+
36
+ 2016-04-09 vaiorabbit <http://twitter.com/vaiorabbit>
37
+
38
+ * README.md: Tested on Windows 10 and NVIDIA GeForce GTX 960.
39
+
40
+ 2016-04-08 vaiorabbit <http://twitter.com/vaiorabbit>
41
+
42
+ * glfw.rb: Just an alias of glfw.rb.
43
+ * glfw32.rb: GLFW binding for version 3.2 (renamed from previous glfw.rb).
44
+
45
+ 2016-04-01 vaiorabbit <http://twitter.com/vaiorabbit>
46
+
47
+ * glfw.rb: Added GLFW 3.2 features.
48
+
49
+ 2016-03-22 vaiorabbit <http://twitter.com/vaiorabbit>
50
+
51
+ * glfw.rb: Added GLFW 3.2 features.
52
+ * glfw31.rb: Previous version of 'glfw.rb' is available as 'glfw31.rb'.
53
+
54
+ 2016-02-06 vaiorabbit <http://twitter.com/vaiorabbit>
55
+
56
+ * README.md: Added projects using this gem.
57
+
58
+ 2016-01-09 vaiorabbit <http://twitter.com/vaiorabbit>
59
+
60
+ * Updated using latest gl.xml.
61
+
62
+ 2016-01-03 vaiorabbit <http://twitter.com/vaiorabbit>
63
+
64
+ * LICENSE.txt: Updated copyright year.
65
+
1
66
  2015-12-29 vaiorabbit <http://twitter.com/vaiorabbit>
2
67
 
3
68
  * lib/glfw.rb, lib/glfw30.rb, lib/glut.rb: 'create_callback' now creates
@@ -1,5 +1,5 @@
1
1
  Ruby-OpenGL : Yet another OpenGL wrapper for Ruby (and wrapper code generator)
2
- Copyright (c) 2013-2015 vaiorabbit <http://twitter.com/vaiorabbit>
2
+ Copyright (c) 2013-2016 vaiorabbit <http://twitter.com/vaiorabbit>
3
3
 
4
4
  This software is provided 'as-is', without any express or implied
5
5
  warranty. In no event will the authors be held liable for any damages
data/README.md CHANGED
@@ -5,17 +5,17 @@
5
5
  ...and wrapper code generator.
6
6
 
7
7
  * Created : 2013-08-28
8
- * Last modified : 2015-12-29
8
+ * Last modified : 2016-06-03
9
9
 
10
10
 
11
11
  ## Features ##
12
12
 
13
13
  * Uses Fiddle (One of the Ruby standard libraries that wraps libffi)
14
- * Unlike opengl ( https://rubygems.org/gems/opengl ), you don't need to build C extension library
14
+ * Unlike opengl ( https://rubygems.org/gems/opengl ), you don't need to build C extension library
15
15
 
16
16
  * Uses Khronos XML API registry
17
- * The command/enum wrapper codes are generated via 'gl.xml'
18
- * Supports OpenGL - 4.5, OpenGL ES - 3.1 and all OpenGL extensions.
17
+ * The command/enum wrapper codes are generated via 'gl.xml'
18
+ * Supports OpenGL - 4.5, OpenGL ES - 3.1 and all OpenGL extensions.
19
19
 
20
20
 
21
21
  ## How to install ##
@@ -84,9 +84,9 @@ https://github.com/vaiorabbit/ruby-opengl
84
84
  ## Prerequisites ##
85
85
 
86
86
  * Fiddle
87
- * A libffi wrapper
88
- * Standard library since Ruby 2.0.0
89
- * I recommend you to use Ruby 2.1.2 and later, which fixed Fiddle's memory leak issue (https://bugs.ruby-lang.org/issues/9599).
87
+ * A libffi wrapper
88
+ * Standard library since Ruby 2.0.0
89
+ * I recommend you to use Ruby 2.1.2 and later, which fixed Fiddle's memory leak issue (https://bugs.ruby-lang.org/issues/9599).
90
90
 
91
91
  ### For sample ###
92
92
 
@@ -104,6 +104,8 @@ Use GLFW or GLUT for creating windows and OpenGL rendering contexts.
104
104
  ## Tested Environment ##
105
105
 
106
106
  * Ruby
107
+ * ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
108
+ * ruby 2.3.0p0 (2015-12-25 revision 53290) [x64-mingw32]
107
109
  * ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
108
110
  * ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
109
111
  * ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
@@ -116,6 +118,20 @@ Use GLFW or GLUT for creating windows and OpenGL rendering contexts.
116
118
  * ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin13.0.0]
117
119
  * ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
118
120
 
121
+ * Windows 10 Home, 64-bit (Version 1511, OS Build 10586.164)
122
+ * NVIDIA GeForce GTX 960
123
+ * OpenGL 4.5
124
+
125
+ > ruby report_env.rb
126
+ Version: 4.5.0 NVIDIA 364.72
127
+
128
+ * Windows 7 Home Premium, 64-bit (Service Pack 1)
129
+ * NVIDIA GeForce GTX 560
130
+ * OpenGL 4.3
131
+
132
+ > ruby report_env.rb
133
+ 4.3.0
134
+
119
135
  * Windows 7 Home Premium, 64-bit (Service Pack 1)
120
136
  * NVIDIA GeForce GTX 560
121
137
  * OpenGL 4.3
@@ -152,44 +168,56 @@ Use GLFW or GLUT for creating windows and OpenGL rendering contexts.
152
168
  Version: 3.0 Mesa 10.6.3
153
169
 
154
170
  * You can use any lib/path names by passing as arguments like:
155
- * OpenGL.load_lib( 'libGL.so', '/usr/lib' )
156
- * GLFW.load_lib( 'libglfw.so', '/usr/lib' )
157
- * GLU.load_lib( 'libGLU.so', '/usr/lib' )
158
- * GLUT.load_lib( 'libglut.so', '/usr/lib' )
171
+ * OpenGL.load_lib( 'libGL.so', '/usr/lib' )
172
+ * GLFW.load_lib( 'libglfw.so', '/usr/lib' )
173
+ * GLU.load_lib( 'libGLU.so', '/usr/lib' )
174
+ * GLUT.load_lib( 'libglut.so', '/usr/lib' )
159
175
 
160
176
  ## Note ##
161
177
 
162
178
  * No Ruby-Style handy interfaces are available (like one in the ruby-opengl2 ( http://ruby-opengl.rubyforge.org/ ))
163
- * Example:
164
- * (Original C API)
165
-
166
- GLuint tex_names_buf[2];
167
- glGenTextures( 2, tex_names_buf );
168
- GLuint tex_name = tex_names_buf[0];
169
-
170
- * (This library)
171
-
172
- tex_names_buf = ' ' # String instance that is enough to catch texture names (integer).
173
- glGenTextures( 2, tex_names_buf )
174
- tex_name = tex_names_buf.unpack('L2')[0]
175
-
176
- * (ruby-opengl2)
177
-
178
- tex_name = glGenTextures( 2 )[0]
179
-
180
- * Reference : Other approaches after ruby-opengl2
181
- * OpenGL (opengl3) by davll ( https://github.com/davll/ruby-opengl )
182
- * Built on Ruby-FFI, which is useful for JRuby users.
183
- * opengl-core by nilium ( https://github.com/nilium/ruby-opengl )
184
- * Built on Fiddle.
185
- * Provides more customize points and handy utilities.
186
-
179
+ * Example:
180
+ * (Original C API)
181
+
182
+ GLuint tex_names_buf[2];
183
+ glGenTextures( 2, tex_names_buf );
184
+ GLuint tex_name = tex_names_buf[0];
185
+
186
+ * (This library)
187
+
188
+ tex_names_buf = ' ' * 8 # String instance that is enough to catch texture names (integer).
189
+ glGenTextures( 2, tex_names_buf )
190
+ tex_name = tex_names_buf.unpack('L2')[0]
191
+
192
+ * (ruby-opengl2)
193
+
194
+ tex_name = glGenTextures( 2 )[0]
195
+
196
+ * Projects using opengl-bindings
197
+ * ruby-gnome2
198
+ * https://github.com/ruby-gnome2/ruby-gnome2
199
+ * https://github.com/ruby-gnome2/ruby-gnome2/tree/master/gtk3/sample/misc
200
+ * gtkglarea1.rb, gtkglarea2.rb
201
+ * dxsdl2r
202
+ * https://github.com/mirichi/dxsdl2r
203
+ * mittsu - A direct port of THREE.js from JavaScript/WebGL to Ruby/OpenGL
204
+ * https://rubygems.org/gems/mittsu
205
+ * https://github.com/jellymann/mittsu
206
+ * opencl-bindings - A Ruby binding for OpenCL 1.2
207
+ * https://rubygems.org/gems/opencl-bindings
208
+ * https://github.com/vaiorabbit/ruby-opencl
209
+
210
+ * Other informative projects
211
+ * argon | neon
212
+ * https://github.com/npomf/argon
213
+ * https://bitbucket.org/npomf/neon/src
214
+ * "vaiorabbit / ruby-opengl - as the basis for the OpenGL, OpenAL, and GLFW FFI libraries."
187
215
 
188
216
  ## License ##
189
217
 
190
218
  The zlib/libpng License ( http://opensource.org/licenses/Zlib ).
191
219
 
192
- Copyright (c) 2013-2015 vaiorabbit <http://twitter.com/vaiorabbit>
220
+ Copyright (c) 2013-2016 vaiorabbit <http://twitter.com/vaiorabbit>
193
221
 
194
222
  This software is provided 'as-is', without any express or implied
195
223
  warranty. In no event will the authors be held liable for any damages
@@ -292,9 +320,9 @@ https://github.com/vaiorabbit/ruby-opengl
292
320
  ## 必要なもの ##
293
321
 
294
322
  * Fiddle
295
- * libffi のラッパーです
296
- * Ruby 2.0.0 以降で標準ライブラリになりました
297
- * Fiddle のメモリリーク問題 (https://bugs.ruby-lang.org/issues/9599) が修正された Ruby 2.1.2 以降での利用を推奨します
323
+ * libffi のラッパーです
324
+ * Ruby 2.0.0 以降で標準ライブラリになりました
325
+ * Fiddle のメモリリーク問題 (https://bugs.ruby-lang.org/issues/9599) が修正された Ruby 2.1.2 以降での利用を推奨します
298
326
 
299
327
  ### サンプル用 ###
300
328
 
@@ -312,6 +340,8 @@ GLFW か GLUT を用意してください。ウィンドウやレンダリング
312
340
  ## テストした環境 ##
313
341
 
314
342
  * Ruby
343
+ * ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
344
+ * ruby 2.3.0p0 (2015-12-25 revision 53290) [x64-mingw32]
315
345
  * ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
316
346
  * ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
317
347
  * ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
@@ -324,6 +354,13 @@ GLFW か GLUT を用意してください。ウィンドウやレンダリング
324
354
  * ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin13.0.0]
325
355
  * ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
326
356
 
357
+ * Windows 10 Home, 64-bit (Version 1511, OS Build 10586.164)
358
+ * NVIDIA GeForce GTX 960
359
+ * OpenGL 4.5
360
+
361
+ > ruby report_env.rb
362
+ Version: 4.5.0 NVIDIA 364.72
363
+
327
364
  * Windows 7 Home Premium, 64-bit (Service Pack 1)
328
365
  * NVIDIA GeForce GTX 560
329
366
  * OpenGL 4.3
@@ -360,38 +397,51 @@ GLFW か GLUT を用意してください。ウィンドウやレンダリング
360
397
  Version: 3.0 Mesa 10.6.3
361
398
 
362
399
  * 引数として渡すことで任意のライブラリ名/パス名を利用できます:
363
- * OpenGL.load_lib( 'libGL.so', '/usr/lib' )
364
- * GLFW.load_lib( 'libglfw.so', '/usr/lib' )
365
- * GLU.load_lib( 'libGLU.so', '/usr/lib' )
366
- * GLUT.load_lib( 'libglut.so', '/usr/lib' )
400
+ * OpenGL.load_lib( 'libGL.so', '/usr/lib' )
401
+ * GLFW.load_lib( 'libglfw.so', '/usr/lib' )
402
+ * GLU.load_lib( 'libGLU.so', '/usr/lib' )
403
+ * GLUT.load_lib( 'libglut.so', '/usr/lib' )
367
404
 
368
405
 
369
406
  ## メモ ##
370
407
 
371
408
  * Rubyスタイルの便利なインターフェースはサポートしていません (ruby-opengl2 ( http://ruby-opengl.rubyforge.org/ ) にあったような感じのもの)
372
- * 例:
373
- * (OpenGLオリジナルの C API)
374
-
375
- GLuint tex_names_buf[2];
376
- glGenTextures( 2, tex_names_buf );
377
- GLuint tex_name = tex_names_buf[0];
378
-
379
- * (このライブラリの場合)
380
-
381
- tex_names_buf = ' ' # テクスチャ名(GLuint)を受け取るのに十分なサイズ String インスタンスであればOK
382
- glGenTextures( 2, tex_names_buf )
383
- tex_name = tex_names_buf.unpack('L2')[0]
384
-
385
- * (ruby-opengl2 の場合)
386
-
387
- tex_name = glGenTextures( 2 )[0] # glGenTextures が配列を返すように修正されています
388
-
389
- * 参考 : ruby-opengl2 以降に出てきたその他のアプローチ
390
- * OpenGL (opengl3) by davll ( https://github.com/davll/ruby-opengl )
391
- * Ruby-FFI を利用 ⇒ JRuby でも使えるようです
392
- * opengl-core by nilium ( https://github.com/nilium/ruby-opengl )
393
- * Fiddle を利用
394
- * カスタマイズポイント・ユーティリティがこのライブラリよりも揃ってます
409
+ * 例:
410
+ * (OpenGLオリジナルの C API)
411
+
412
+ GLuint tex_names_buf[2];
413
+ glGenTextures( 2, tex_names_buf );
414
+ GLuint tex_name = tex_names_buf[0];
415
+
416
+ * (このライブラリの場合)
417
+
418
+ tex_names_buf = ' ' * 8 # テクスチャ名(GLuint)を受け取るのに十分なサイズ String インスタンスであればOK
419
+ glGenTextures( 2, tex_names_buf )
420
+ tex_name = tex_names_buf.unpack('L2')[0]
421
+
422
+ * (ruby-opengl2 の場合)
423
+
424
+ tex_name = glGenTextures( 2 )[0] # glGenTextures が配列を返すように修正されています
425
+
426
+ * opengl-bindings を使ったプロジェクト
427
+ * ruby-gnome2
428
+ * https://github.com/ruby-gnome2/ruby-gnome2
429
+ * https://github.com/ruby-gnome2/ruby-gnome2/tree/master/gtk3/sample/misc
430
+ * gtkglarea1.rb, gtkglarea2.rb
431
+ * dxsdl2r
432
+ * https://github.com/mirichi/dxsdl2r
433
+ * mittsu - A direct port of THREE.js from JavaScript/WebGL to Ruby/OpenGL
434
+ * https://rubygems.org/gems/mittsu
435
+ * https://github.com/jellymann/mittsu
436
+ * opencl-bindings - A Ruby binding for OpenCL 1.2
437
+ * https://rubygems.org/gems/opencl-bindings
438
+ * https://github.com/vaiorabbit/ruby-opencl
439
+
440
+ * 参考になりそうなプロジェクト
441
+ * argon | neon
442
+ * https://github.com/npomf/argon
443
+ * https://bitbucket.org/npomf/neon/src
444
+ * "vaiorabbit / ruby-opengl - as the basis for the OpenGL, OpenAL, and GLFW FFI libraries."
395
445
 
396
446
 
397
447
  ## ライセンス ##
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # A GLFW wrapper (for version 3.1)
2
+ # A GLFW wrapper (for version 3.0, 3.1 and 3.2)
3
3
  require 'fiddle/import'
4
4
 
5
5
  module GLFW
@@ -35,9 +35,8 @@ module GLFW
35
35
  end
36
36
 
37
37
  # defines
38
- GLFW_VERSION_MAJOR = 3
39
- GLFW_VERSION_MINOR = 1
40
- GLFW_VERSION_REVISION = 0
38
+ GLFW_TRUE = 1 # Available since GLFW 3.2
39
+ GLFW_FALSE = 0 # Available since GLFW 3.2
41
40
 
42
41
  GLFW_RELEASE = 0
43
42
  GLFW_PRESS = 1
@@ -213,14 +212,16 @@ module GLFW
213
212
  GLFW_VERSION_UNAVAILABLE = 0x00010007
214
213
  GLFW_PLATFORM_ERROR = 0x00010008
215
214
  GLFW_FORMAT_UNAVAILABLE = 0x00010009
215
+ GLFW_NO_WINDOW_CONTEXT = 0x0001000A # Available since GLFW 3.2
216
216
 
217
217
  GLFW_FOCUSED = 0x00020001
218
218
  GLFW_ICONIFIED = 0x00020002
219
219
  GLFW_RESIZABLE = 0x00020003
220
220
  GLFW_VISIBLE = 0x00020004
221
221
  GLFW_DECORATED = 0x00020005
222
- GLFW_AUTO_ICONIFY = 0x00020006
223
- GLFW_FLOATING = 0x00020007
222
+ GLFW_AUTO_ICONIFY = 0x00020006 # Available since GLFW 3.1
223
+ GLFW_FLOATING = 0x00020007 # Available since GLFW 3.1
224
+ GLFW_MAXIMIZED = 0x00020008 # Available since GLFW 3.2
224
225
 
225
226
  GLFW_RED_BITS = 0x00021001
226
227
  GLFW_GREEN_BITS = 0x00021002
@@ -248,7 +249,10 @@ module GLFW
248
249
  GLFW_OPENGL_DEBUG_CONTEXT = 0x00022007
249
250
  GLFW_OPENGL_PROFILE = 0x00022008
250
251
  GLFW_CONTEXT_RELEASE_BEHAVIOR = 0x00022009
252
+ GLFW_CONTEXT_NO_ERROR = 0x0002200A
253
+ GLFW_CONTEXT_CREATION_API = 0x0002200B # Available since GLFW 3.2
251
254
 
255
+ GLFW_NO_API = 0 # Available since GLFW 3.2
252
256
  GLFW_OPENGL_API = 0x00030001
253
257
  GLFW_OPENGL_ES_API = 0x00030002
254
258
 
@@ -272,6 +276,9 @@ module GLFW
272
276
  GLFW_RELEASE_BEHAVIOR_FLUSH = 0x00035001
273
277
  GLFW_RELEASE_BEHAVIOR_NONE = 0x00035002
274
278
 
279
+ GLFW_NATIVE_CONTEXT_API = 0x00036001 # Available since GLFW 3.2
280
+ GLFW_EGL_CONTEXT_API = 0x00036002 # Available since GLFW 3.2
281
+
275
282
  GLFW_ARROW_CURSOR = 0x00036001
276
283
  GLFW_IBEAM_CURSOR = 0x00036002
277
284
  GLFW_CROSSHAIR_CURSOR = 0x00036003
@@ -300,9 +307,10 @@ module GLFW
300
307
  :GLFWscrollfun => "void GLFWscrollfun(void*,double,double)",
301
308
  :GLFWkeyfun => "void GLFWkeyfun(void*,int,int,int,int)",
302
309
  :GLFWcharfun => "void GLFWcharfun(void*,unsigned int)",
303
- :GLFWcharmodsfun => "void GLFWcharmodsfun(void*,unsigned int,int)",
304
- :GLFWdropfun => "void GLFWdropfun(void*,int,const char**)",
305
- :GLFWmonitorfun => "void GLFWmonitorfun(void*,int)",
310
+ :GLFWcharmodsfun => "void GLFWcharmodsfun(void*,unsigned int,int)", # Available since GLFW 3.1
311
+ :GLFWdropfun => "void GLFWdropfun(void*,int,const char**)", # Available since GLFW 3.1
312
+ :GLFWmonitorfun => "void GLFWmonitorfun(void*,int)", # Available since GLFW 3.0
313
+ :GLFWjoystickfun => "void GGLFWjoystickfun(int,int)", # Available since GLFW 3.2
306
314
  }
307
315
 
308
316
  # Creates a callback as an instance of Fiddle::Function
@@ -342,12 +350,14 @@ module GLFW
342
350
  GLFWkeyfun_cb_retval = Fiddle::TYPE_VOID
343
351
  GLFWcharfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT]
344
352
  GLFWcharfun_cb_retval = Fiddle::TYPE_VOID
345
- GLFWcharmodsfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT, Fiddle::TYPE_INT]
346
- GLFWcharmodsfun_cb_retval = Fiddle::TYPE_VOID
347
- GLFWdropfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
348
- GLFWdropfun_cb_retval = Fiddle::TYPE_VOID
349
- GLFWmonitorfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
350
- GLFWmonitorfun_cb_retval = Fiddle::TYPE_VOID
353
+ GLFWcharmodsfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT, Fiddle::TYPE_INT] # Available since GLFW 3.1
354
+ GLFWcharmodsfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.1
355
+ GLFWdropfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP] # Available since GLFW 3.1
356
+ GLFWdropfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.1
357
+ GLFWmonitorfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT] # Available since GLFW 3.0
358
+ GLFWmonitorfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.0
359
+ GLFWjoystickfun_cb_args = [Fiddle::TYPE_INT, Fiddle::TYPE_INT] # Available since GLFW 3.2
360
+ GLFWjoystickfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.2
351
361
 
352
362
  @@glfw_cb_closure_signature = {
353
363
  :GLFWerrorfun => [GLFWerrorfun_cb_retval, GLFWerrorfun_cb_args],
@@ -364,9 +374,10 @@ module GLFW
364
374
  :GLFWscrollfun => [GLFWscrollfun_cb_retval, GLFWscrollfun_cb_args],
365
375
  :GLFWkeyfun => [GLFWkeyfun_cb_retval, GLFWkeyfun_cb_args],
366
376
  :GLFWcharfun => [GLFWcharfun_cb_retval, GLFWcharfun_cb_args],
367
- :GLFWcharmodsfun => [GLFWcharmodsfun_cb_retval, GLFWcharmodsfun_cb_args],
368
- :GLFWdropfun => [GLFWdropfun_cb_retval, GLFWdropfun_cb_args],
377
+ :GLFWcharmodsfun => [GLFWcharmodsfun_cb_retval, GLFWcharmodsfun_cb_args], # Available since GLFW 3.1
378
+ :GLFWdropfun => [GLFWdropfun_cb_retval, GLFWdropfun_cb_args], # Available since GLFW 3.1
369
379
  :GLFWmonitorfun => [GLFWmonitorfun_cb_retval, GLFWmonitorfun_cb_args],
380
+ :GLFWjoystickfun => [GLFWjoystickfun_cb_retval, GLFWjoystickfun_cb_args], # Available since GLFW 3.2
370
381
  }
371
382
 
372
383
  # Creates a callback as an instance of Fiddle::Closure::BlockCaller
@@ -398,6 +409,7 @@ module GLFW
398
409
  "unsigned short* blue",
399
410
  "unsigned int size"])
400
411
 
412
+ # Available since GLFW 3.1
401
413
  GLFWimage = struct(["int width",
402
414
  "int height",
403
415
  "unsigned char* pixels"])
@@ -405,7 +417,7 @@ module GLFW
405
417
  @@glfw_import_done = false
406
418
 
407
419
  # Load native library.
408
- def self.load_lib(lib = nil, path = nil)
420
+ def self.load_lib(lib = nil, path = nil, output_error = false)
409
421
  if lib == nil && path == nil
410
422
  case OpenGL.get_platform
411
423
  when :OPENGL_PLATFORM_WINDOWS
@@ -422,7 +434,7 @@ module GLFW
422
434
  else
423
435
  dlload (lib)
424
436
  end
425
- import_symbols() unless @@glfw_import_done
437
+ import_symbols(output_error) unless @@glfw_import_done
426
438
  end
427
439
 
428
440
  def self.load_dll(lib = nil, path = nil)
@@ -430,89 +442,153 @@ module GLFW
430
442
  self.load_lib(lib, path)
431
443
  end
432
444
 
433
- def self.import_symbols
445
+ @@lib_signature = [
446
+ 'int glfwInit()',
447
+ 'void glfwTerminate()',
448
+ 'void glfwGetVersion(int*, int*, int*)',
449
+ 'const char* glfwGetVersionString()',
450
+ 'void* glfwSetErrorCallback(void*)',
451
+ 'void** glfwGetMonitors(int*)',
452
+ 'void* glfwGetPrimaryMonitor()',
453
+ 'void glfwGetMonitorPos(void*, int*, int*)',
454
+ 'void glfwGetMonitorPhysicalSize(void*, int*, int*)',
455
+ 'const char* glfwGetMonitorName(void*)',
456
+ 'void* glfwSetMonitorCallback(void*)', # Available since GLFW 3.0
457
+ 'const void* glfwGetVideoModes(void*, int*)',
458
+ 'const void* glfwGetVideoMode(void*)', # Available since GLFW 3.0
459
+ 'void glfwSetGamma(void*, float)', # Available since GLFW 3.0
460
+ 'const void* glfwGetGammaRamp(void*)', # Available since GLFW 3.0
461
+ 'void glfwSetGammaRamp(void*, const void*)', # Available since GLFW 3.0
462
+ 'void glfwDefaultWindowHints()', # Available since GLFW 3.0
463
+ 'void glfwWindowHint(int, int)', # Available since GLFW 3.0
464
+ 'void* glfwCreateWindow(int, int, const char*, void*, void*)', # Available since GLFW 3.0
465
+ 'void glfwDestroyWindow(void*)', # Available since GLFW 3.0
466
+ 'int glfwWindowShouldClose(void*)', # Available since GLFW 3.0
467
+ 'void glfwSetWindowShouldClose(void* window, int)', # Available since GLFW 3.0
468
+ 'void glfwSetWindowTitle(void*, const char*)',
469
+ 'void glfwSetWindowIcon(void*, int, void*)', # Available since GLFW 3.2
470
+ 'void glfwGetWindowPos(void*, int*, int*)', # Available since GLFW 3.0
471
+ 'void glfwSetWindowPos(void*, int, int)',
472
+ 'void glfwGetWindowSize(void*, int*, int*)',
473
+ 'void glfwSetWindowSizeLimits(void*, int, int, int, int)', # Available since GLFW 3.2
474
+ 'void glfwSetWindowAspectRatio(void*, int, int)', # Available since GLFW 3.2
475
+ 'void glfwSetWindowSize(void*, int, int)',
476
+ 'void glfwGetFramebufferSize(void*, int*, int*)', # Available since GLFW 3.0
477
+ 'void glfwGetWindowFrameSize(void*, int*, int*, int*, int*)', # Available since GLFW 3.1
478
+ 'void glfwIconifyWindow(void*)',
479
+ 'void glfwRestoreWindow(void*)',
480
+ 'void glfwMaximizeWindow(void*)', # Available since GLFW 3.2
481
+ 'void glfwShowWindow(void*)', # Available since GLFW 3.0
482
+ 'void glfwHideWindow(void*)', # Available since GLFW 3.0
483
+ 'void glfwFocusWindow(void*)', # Available since GLFW 3.2
484
+ 'void* glfwGetWindowMonitor(void*)', # Available since GLFW 3.0
485
+ 'void glfwSetWindowMonitor(void*, void*, int, int, int, int, int)', # Available since GLFW 3.2
486
+ 'int glfwGetWindowAttrib(void*, int)', # Available since GLFW 3.0
487
+ 'void glfwSetWindowUserPointer(void*, void*)', # Available since GLFW 3.0
488
+ 'void* glfwGetWindowUserPointer(void*)', # Available since GLFW 3.0
489
+ 'void* glfwSetWindowPosCallback(void*, void*)', # Available since GLFW 3.0
490
+ 'void* glfwSetWindowSizeCallback(void*, void*)',
491
+ 'void* glfwSetWindowCloseCallback(void*, void*)',
492
+ 'void* glfwSetWindowRefreshCallback(void*, void*)',
493
+ 'void* glfwSetWindowFocusCallback(void*, void*)', # Available since GLFW 3.0
494
+ 'void* glfwSetWindowIconifyCallback(void*, void*)', # Available since GLFW 3.0
495
+ 'void* glfwSetFramebufferSizeCallback(void*, void*)', # Available since GLFW 3.0
496
+ 'void glfwPollEvents()',
497
+ 'void glfwWaitEvents()',
498
+ 'void glfwWaitEventsTimeout(double)', # Available since GLFW 3.2
499
+ 'void glfwPostEmptyEvent()', # Available since GLFW 3.1
500
+ 'int glfwGetInputMode(void*, int)', # Available since GLFW 3.0
501
+ 'void glfwSetInputMode(void*, int, int)', # Available since GLFW 3.0
502
+ 'const char* glfwGetKeyName(int, int)', # Available since GLFW 3.2
503
+ 'int glfwGetKey(void*, int)',
504
+ 'int glfwGetMouseButton(void*, int)',
505
+ 'void glfwGetCursorPos(void*, double*, double*)', # Available since GLFW 3.0
506
+ 'void glfwSetCursorPos(void*, double, double)', # Available since GLFW 3.0
507
+ 'void* glfwCreateCursor(void*, int, int)', # Available since GLFW 3.1
508
+ 'void* glfwCreateStandardCursor(int)', # Available since GLFW 3.1
509
+ 'void glfwDestroyCursor(void*)', # Available since GLFW 3.1
510
+ 'void glfwSetCursor(void*, void*)', # Available since GLFW 3.1
511
+ 'void* glfwSetKeyCallback(void*, void*)',
512
+ 'void* glfwSetCharCallback(void*, void*)',
513
+ 'void* glfwSetCharModsCallback(void*, void*)', # Available since GLFW 3.1
514
+ 'void* glfwSetMouseButtonCallback(void*, void*)',
515
+ 'void* glfwSetCursorPosCallback(void*, void*)', # Available since GLFW 3.0
516
+ 'void* glfwSetCursorEnterCallback(void*, void*)', # Available since GLFW 3.0
517
+ 'void* glfwSetScrollCallback(void*, void*)', # Available since GLFW 3.0
518
+ 'void* glfwSetDropCallback(void*, void*)', # Available since GLFW 3.1
519
+ 'int glfwJoystickPresent(int)', # Available since GLFW 3.0
520
+ 'const float* glfwGetJoystickAxes(int, int*)', # Available since GLFW 3.0
521
+ 'const unsigned char* glfwGetJoystickButtons(int, int*)',
522
+ 'const char* glfwGetJoystickName(int)', # Available since GLFW 3.0
523
+ 'void* glfwSetJoystickCallback(void*)', # Available since GLFW 3.2
524
+ 'void glfwSetClipboardString(void*, const char*)', # Available since GLFW 3.0
525
+ 'const char* glfwGetClipboardString(void*)', # Available since GLFW 3.0
526
+ 'double glfwGetTime()',
527
+ 'void glfwSetTime(double)',
528
+ 'GLFWuint64 glfwGetTimerValue()', # Available since GLFW 3.2
529
+ 'GLFWuint64 glfwGetTimerFrequency()', # Available since GLFW 3.2
530
+ 'void glfwMakeContextCurrent(void*)', # Available since GLFW 3.0
531
+ 'void* glfwGetCurrentContext()', # Available since GLFW 3.0
532
+ 'void glfwSwapBuffers(void*)',
533
+ 'void glfwSwapInterval(int)',
534
+ 'int glfwExtensionSupported(const char*)',
535
+ 'void* glfwGetProcAddress(const char*)',
536
+ # >>> Vulkan >>>
537
+ 'int glfwVulkanSupported()', # Available since GLFW 3.2
538
+ 'const char** glfwGetRequiredInstanceExtensions(unsigned int*)', # Available since GLFW 3.2
539
+ # 'GLFWvkproc glfwGetInstanceProcAddress(void*, const char*)',
540
+ # 'int glfwGetPhysicalDevicePresentationSupport(void*, void*, unsigned int)',
541
+ # 'VkResult glfwCreateWindowSurface(void*, void*, const void*, void*)',
542
+ # <<< Vulkan <<<
543
+ ]
544
+
545
+ def self.import_symbols(output_error = false)
546
+ typealias 'GLFWuint64', 'unsigned long long' # Available since GLFW 3.2
547
+
434
548
  # function
435
- extern 'int glfwInit()'
436
- extern 'void glfwTerminate()'
437
- extern 'void glfwGetVersion(int*, int*, int*)'
438
- extern 'const char* glfwGetVersionString()'
439
- extern 'void* glfwSetErrorCallback(void*)'
440
- extern 'void** glfwGetMonitors(int*)'
441
- extern 'void* glfwGetPrimaryMonitor()'
442
- extern 'void glfwGetMonitorPos(void*, int*, int*)'
443
- extern 'void glfwGetMonitorPhysicalSize(void*, int*, int*)'
444
- extern 'const char* glfwGetMonitorName(void*)'
445
- extern 'void* glfwSetMonitorCallback(void*)'
446
- extern 'const void* glfwGetVideoModes(void*, int*)'
447
- extern 'const void* glfwGetVideoMode(void*)'
448
- extern 'void glfwSetGamma(void*, float)'
449
- extern 'const void* glfwGetGammaRamp(void*)'
450
- extern 'void glfwSetGammaRamp(void*, const void*)'
451
- extern 'void glfwDefaultWindowHints()'
452
- extern 'void glfwWindowHint(int, int)'
453
- extern 'void* glfwCreateWindow(int, int, const char*, void*, void*)'
454
- extern 'void glfwDestroyWindow(void*)'
455
- extern 'int glfwWindowShouldClose(void*)'
456
- extern 'void glfwSetWindowShouldClose(void* window, int)'
457
- extern 'void glfwSetWindowTitle(void*, const char*)'
458
- extern 'void glfwGetWindowPos(void*, int*, int*)'
459
- extern 'void glfwSetWindowPos(void*, int, int)'
460
- extern 'void glfwGetWindowSize(void*, int*, int*)'
461
- extern 'void glfwSetWindowSize(void*, int, int)'
462
- extern 'void glfwGetFramebufferSize(void*, int*, int*)'
463
- extern 'void glfwGetWindowFrameSize(void*, int*, int*, int*, int*)'
464
- extern 'void glfwIconifyWindow(void*)'
465
- extern 'void glfwRestoreWindow(void*)'
466
- extern 'void glfwShowWindow(void*)'
467
- extern 'void glfwHideWindow(void*)'
468
- extern 'void* glfwGetWindowMonitor(void*)'
469
- extern 'int glfwGetWindowAttrib(void*, int)'
470
- extern 'void glfwSetWindowUserPointer(void*, void*)'
471
- extern 'void* glfwGetWindowUserPointer(void*)'
472
- extern 'void* glfwSetWindowPosCallback(void*, void*)'
473
- extern 'void* glfwSetWindowSizeCallback(void*, void*)'
474
- extern 'void* glfwSetWindowCloseCallback(void*, void*)'
475
- extern 'void* glfwSetWindowRefreshCallback(void*, void*)'
476
- extern 'void* glfwSetWindowFocusCallback(void*, void*)'
477
- extern 'void* glfwSetWindowIconifyCallback(void*, void*)'
478
- extern 'void* glfwSetFramebufferSizeCallback(void*, void*)'
479
- extern 'void glfwPollEvents()'
480
- extern 'void glfwWaitEvents()'
481
- extern 'void glfwPostEmptyEvent()'
482
- extern 'int glfwGetInputMode(void*, int)'
483
- extern 'void glfwSetInputMode(void*, int, int)'
484
- extern 'int glfwGetKey(void*, int)'
485
- extern 'int glfwGetMouseButton(void*, int)'
486
- extern 'void glfwGetCursorPos(void*, double*, double*)'
487
- extern 'void glfwSetCursorPos(void*, double, double)'
488
- extern 'void* glfwCreateCursor(void*, int, int)'
489
- extern 'void* glfwCreateStandardCursor(int)'
490
- extern 'void glfwDestroyCursor(void*)'
491
- extern 'void glfwSetCursor(void*, void*)'
492
- extern 'void* glfwSetKeyCallback(void*, void*)'
493
- extern 'void* glfwSetCharCallback(void*, void*)'
494
- extern 'void* glfwSetCharModsCallback(void*, void*)'
495
- extern 'void* glfwSetMouseButtonCallback(void*, void*)'
496
- extern 'void* glfwSetCursorPosCallback(void*, void*)'
497
- extern 'void* glfwSetCursorEnterCallback(void*, void*)'
498
- extern 'void* glfwSetScrollCallback(void*, void*)'
499
- extern 'void* glfwSetDropCallback(void*, void*)'
500
- extern 'int glfwJoystickPresent(int)'
501
- extern 'const float* glfwGetJoystickAxes(int, int*)'
502
- extern 'const unsigned char* glfwGetJoystickButtons(int, int*)'
503
- extern 'const char* glfwGetJoystickName(int)'
504
- extern 'void glfwSetClipboardString(void*, const char*)'
505
- extern 'const char* glfwGetClipboardString(void*)'
506
- extern 'double glfwGetTime()'
507
- extern 'void glfwSetTime(double)'
508
- extern 'void glfwMakeContextCurrent(void*)'
509
- extern 'void* glfwGetCurrentContext()'
510
- extern 'void glfwSwapBuffers(void*)'
511
- extern 'void glfwSwapInterval(int)'
512
- extern 'int glfwExtensionSupported(const char*)'
513
- extern 'void* glfwGetProcAddress(const char*)'
549
+ @@lib_signature.each do |sig|
550
+ begin
551
+ extern sig
552
+ rescue
553
+ $stderr.puts("[Warning] Failed to import #{sig}.") if output_error
554
+ end
555
+ end
556
+
557
+ ver_major = ' ' * 4
558
+ ver_minor = ' ' * 4
559
+ ver_rev = ' ' * 4
560
+ glfwGetVersion(ver_major, ver_minor, ver_rev)
561
+
562
+ GLFW.const_set('GLFW_VERSION_MAJOR', ver_major.unpack('L')[0])
563
+ GLFW.const_set('GLFW_VERSION_MINOR', ver_minor.unpack('L')[0])
564
+ GLFW.const_set('GLFW_VERSION_REVISION', ver_rev.unpack('L')[0])
514
565
 
515
566
  @@glfw_import_done = true
516
567
  end
517
568
 
518
569
  end
570
+
571
+ =begin
572
+ Ruby-OpenGL : Yet another OpenGL wrapper for Ruby (and wrapper code generator)
573
+ Copyright (c) 2013-2016 vaiorabbit <http://twitter.com/vaiorabbit>
574
+
575
+ This software is provided 'as-is', without any express or implied
576
+ warranty. In no event will the authors be held liable for any damages
577
+ arising from the use of this software.
578
+
579
+ Permission is granted to anyone to use this software for any purpose,
580
+ including commercial applications, and to alter it and redistribute it
581
+ freely, subject to the following restrictions:
582
+
583
+ 1. The origin of this software must not be misrepresented; you must not
584
+ claim that you wrote the original software. If you use this software
585
+ in a product, an acknowledgment in the product documentation would be
586
+ appreciated but is not required.
587
+
588
+ 2. Altered source versions must be plainly marked as such, and must not be
589
+ misrepresented as being the original software.
590
+
591
+ 3. This notice may not be removed or altered from any source
592
+ distribution.
593
+ =end
594
+