ruby_rpg 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -0
  3. data/bin/build.bash +1 -1
  4. data/bin/import +11 -1
  5. data/ext/gl_native/extconf.rb +20 -0
  6. data/ext/gl_native/gl_native.c +563 -0
  7. data/ext/glfw_native/extconf.rb +18 -0
  8. data/ext/glfw_native/glfw_native.c +451 -0
  9. data/lib/engine/assets/_imported/cube.index_data +36 -0
  10. data/lib/engine/assets/_imported/cube.vertex_data +720 -0
  11. data/lib/engine/assets/_imported/plane.index_data +6 -0
  12. data/lib/engine/assets/_imported/plane.vertex_data +120 -0
  13. data/lib/engine/assets/_imported/sphere.index_data +2880 -0
  14. data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
  15. data/lib/engine/assets/cube.obj +46 -0
  16. data/lib/engine/assets/plane.obj +16 -0
  17. data/lib/engine/assets/sphere.obj +2488 -0
  18. data/lib/engine/component.rb +2 -0
  19. data/lib/engine/components/audio_source.rb +6 -4
  20. data/lib/engine/components/direction_light.rb +83 -4
  21. data/lib/engine/components/orthographic_camera.rb +31 -25
  22. data/lib/engine/components/perspective_camera.rb +35 -12
  23. data/lib/engine/components/point_light.rb +61 -5
  24. data/lib/engine/components/renderers/font_renderer.rb +19 -0
  25. data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
  26. data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
  27. data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
  28. data/lib/engine/components/spot_light.rb +90 -0
  29. data/lib/engine/components/sprite_animator.rb +42 -0
  30. data/lib/engine/components/ui/flex/layout.rb +94 -0
  31. data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
  32. data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
  33. data/lib/engine/components/ui/flex.rb +60 -0
  34. data/lib/engine/components/ui/font_renderer.rb +57 -0
  35. data/lib/engine/components/ui/rect.rb +117 -0
  36. data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
  37. data/lib/engine/components/ui/sprite_renderer.rb +117 -0
  38. data/lib/engine/compute_shader.rb +14 -0
  39. data/lib/engine/compute_texture.rb +13 -0
  40. data/lib/engine/debugging.rb +4 -4
  41. data/lib/engine/engine.rb +8 -12
  42. data/lib/engine/font.rb +29 -4
  43. data/lib/engine/game_object.rb +121 -49
  44. data/lib/engine/gl.rb +439 -0
  45. data/lib/engine/glfw.rb +151 -0
  46. data/lib/engine/input.rb +115 -7
  47. data/lib/engine/material.rb +146 -11
  48. data/lib/engine/matrix_helpers.rb +38 -0
  49. data/lib/engine/mesh.rb +41 -16
  50. data/lib/engine/metal/compute_shader.rb +118 -0
  51. data/lib/engine/metal/compute_texture.rb +176 -0
  52. data/lib/engine/metal/device.rb +98 -0
  53. data/lib/engine/metal/metal_bindings.rb +126 -0
  54. data/lib/engine/opengl/compute_shader.rb +77 -0
  55. data/lib/engine/opengl/compute_texture.rb +31 -0
  56. data/lib/engine/physics/components/rigidbody.rb +23 -20
  57. data/lib/engine/physics/components/sphere_collider.rb +13 -3
  58. data/lib/engine/physics/physics_resolver.rb +24 -12
  59. data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
  60. data/lib/engine/rendering/gpu_timer.rb +68 -0
  61. data/lib/engine/rendering/instance_renderer.rb +140 -61
  62. data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
  63. data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
  64. data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
  65. data/lib/engine/rendering/post_processing/effect.rb +11 -0
  66. data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
  67. data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
  68. data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
  69. data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
  70. data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
  71. data/lib/engine/rendering/render_pipeline.rb +238 -6
  72. data/lib/engine/rendering/render_texture.rb +118 -0
  73. data/lib/engine/rendering/screen_quad.rb +64 -0
  74. data/lib/engine/rendering/shadow_map_array.rb +72 -0
  75. data/lib/engine/rendering/skybox_cubemap.rb +119 -0
  76. data/lib/engine/rendering/skybox_renderer.rb +64 -0
  77. data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
  78. data/lib/engine/screenshoter.rb +1 -1
  79. data/lib/engine/serialization/graph_serializer.rb +74 -0
  80. data/lib/engine/serialization/object_serializer.rb +98 -0
  81. data/lib/engine/serialization/serializable.rb +78 -0
  82. data/lib/engine/serialization/yaml_persistence.rb +45 -0
  83. data/lib/engine/shader.rb +149 -25
  84. data/lib/engine/shaders/colour_frag.glsl +9 -1
  85. data/lib/engine/shaders/colour_vertex.glsl +12 -5
  86. data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
  87. data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
  88. data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
  89. data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +3 -2
  90. data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
  91. data/lib/engine/shaders/lighting/lighting.glsl +33 -0
  92. data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
  93. data/lib/engine/shaders/lighting/point_light.glsl +46 -0
  94. data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
  95. data/lib/engine/shaders/mesh_frag.glsl +28 -77
  96. data/lib/engine/shaders/mesh_vertex.glsl +5 -5
  97. data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
  98. data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
  99. data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
  100. data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
  101. data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
  102. data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
  103. data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
  104. data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
  105. data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
  106. data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
  107. data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
  108. data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
  109. data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
  110. data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
  111. data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
  112. data/lib/engine/shaders/shadow_frag.glsl +6 -0
  113. data/lib/engine/shaders/shadow_vertex.glsl +11 -0
  114. data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
  115. data/lib/engine/shaders/vertex_lit_frag.glsl +10 -66
  116. data/lib/engine/shaders/vertex_lit_vertex.glsl +1 -1
  117. data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
  118. data/lib/engine/standard_objects/cube.rb +23 -0
  119. data/lib/engine/standard_objects/default_material.rb +20 -0
  120. data/lib/engine/standard_objects/plane.rb +23 -0
  121. data/lib/engine/standard_objects/sphere.rb +23 -0
  122. data/lib/engine/texture.rb +28 -19
  123. data/lib/engine/ui/rect.rb +16 -0
  124. data/lib/engine/window.rb +2 -2
  125. data/lib/ruby_rpg.rb +69 -9
  126. data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
  127. data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
  128. data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
  129. data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
  130. metadata +124 -466
  131. data/glfw-3.3.9.bin.MACOS/README.md +0 -5
  132. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  133. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  134. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
  135. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
  136. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  137. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
  138. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
  139. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
  140. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
  141. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
  142. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
  143. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
  144. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
  145. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
  146. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
  147. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
  148. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
  149. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
  150. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
  151. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
  152. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
  153. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
  154. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
  155. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
  156. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
  157. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
  158. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
  159. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
  160. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
  161. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
  162. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
  163. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
  164. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
  165. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
  166. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
  167. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
  168. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
  169. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
  170. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
  171. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
  172. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
  173. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
  174. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
  175. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
  176. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
  177. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
  178. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
  179. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
  180. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
  181. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
  182. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
  183. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
  184. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
  185. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
  186. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
  187. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
  188. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
  189. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
  190. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
  191. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
  192. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
  193. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
  194. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
  195. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
  196. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  197. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  198. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  199. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  200. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  201. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
  202. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
  203. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  204. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
  205. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
  206. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
  207. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
  208. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
  209. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
  210. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
  211. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
  212. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
  213. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
  214. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
  215. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
  216. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
  217. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
  218. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
  219. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
  220. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
  221. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
  222. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
  223. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
  224. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
  225. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
  226. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
  227. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
  228. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
  229. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
  230. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
  231. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
  232. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
  233. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
  234. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
  235. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
  236. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
  237. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
  238. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
  239. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
  240. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
  241. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
  242. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
  243. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
  244. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
  245. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
  246. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
  247. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
  248. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
  249. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
  250. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
  251. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
  252. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
  253. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
  254. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
  255. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
  256. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
  257. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
  258. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
  259. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
  260. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
  261. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
  262. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
  263. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
  264. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
  265. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
  266. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
  267. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
  268. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
  269. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
  270. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
  271. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
  272. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
  273. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
  274. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
  275. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
  276. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
  277. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
  278. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
  279. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
  280. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
  281. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
  282. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
  283. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
  284. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
  285. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
  286. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
  287. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
  288. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
  289. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
  290. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
  291. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
  292. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
  293. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
  294. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
  295. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
  296. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
  297. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
  298. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
  299. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
  300. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
  301. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  302. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  303. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  304. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  305. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
  306. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
  307. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  308. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  309. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  310. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  311. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  312. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  313. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  314. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  315. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  316. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  317. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
  318. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
  319. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
  320. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
  321. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
  322. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
  323. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
  324. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  325. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  326. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  327. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  328. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  329. data/glfw-3.4.bin.WIN64/README.md +0 -70
  330. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  331. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  332. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
  333. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
  334. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  335. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
  336. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
  337. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
  338. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
  339. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
  340. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
  341. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
  342. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
  343. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
  344. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
  345. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
  346. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
  347. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
  348. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
  349. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
  350. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
  351. data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
  352. data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
  353. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
  354. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
  355. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
  356. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
  357. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
  358. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
  359. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
  360. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
  361. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
  362. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
  363. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
  364. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
  365. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
  366. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
  367. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
  368. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
  369. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
  370. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
  371. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
  372. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
  373. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
  374. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
  375. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
  376. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
  377. data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
  378. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
  379. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
  380. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
  381. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
  382. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
  383. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
  384. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
  385. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
  386. data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
  387. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
  388. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
  389. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
  390. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
  391. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
  392. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
  393. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
  394. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  395. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  396. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  397. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  398. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  399. data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
  400. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
  401. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  402. data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
  403. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
  404. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
  405. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
  406. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
  407. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
  408. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
  409. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
  410. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
  411. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
  412. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
  413. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
  414. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
  415. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
  416. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
  417. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
  418. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
  419. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
  420. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
  421. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
  422. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
  423. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
  424. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
  425. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
  426. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
  427. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
  428. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
  429. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
  430. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
  431. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
  432. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
  433. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
  434. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
  435. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
  436. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
  437. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
  438. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
  439. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
  440. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
  441. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
  442. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
  443. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
  444. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
  445. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
  446. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
  447. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
  448. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
  449. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
  450. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
  451. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
  452. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
  453. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
  454. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
  455. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
  456. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
  457. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
  458. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
  459. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
  460. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
  461. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
  462. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
  463. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
  464. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
  465. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
  466. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
  467. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
  468. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
  469. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
  470. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
  471. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
  472. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
  473. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
  474. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
  475. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
  476. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
  477. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
  478. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
  479. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
  480. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
  481. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
  482. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
  483. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
  484. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
  485. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
  486. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
  487. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
  488. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
  489. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
  490. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
  491. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
  492. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
  493. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
  494. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
  495. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
  496. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
  497. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
  498. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
  499. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
  500. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
  501. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
  502. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
  503. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
  504. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
  505. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
  506. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  507. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  508. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
  509. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  510. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  511. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
  512. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
  513. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  514. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  515. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  516. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  517. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  518. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  519. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  520. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  521. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  522. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  523. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
  524. data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
  525. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
  526. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
  527. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
  528. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
  529. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
  530. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
  531. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  532. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  533. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  534. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  535. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  536. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  537. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  538. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  539. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  540. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  541. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  542. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  543. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  544. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  545. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  546. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  547. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  548. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  549. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  550. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  551. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  552. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  553. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  554. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  555. data/lib/engine/components/font_renderer.rb +0 -134
  556. data/lib/engine/components/mesh_renderer.rb +0 -31
  557. data/lib/engine/components/sprite_renderer.rb +0 -141
  558. data/lib/engine/components/ui_font_renderer.rb +0 -140
  559. data/lib/engine/components/ui_sprite_renderer.rb +0 -101
  560. data/lib/engine/shaders/skybox_frag.glsl +0 -12
  561. /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
  562. /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
  563. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +0 -0
  564. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/lib-static-ucrt/glfw3.dll +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73ebf7bd3a497f3da5bb8bf0c953da36446ef912edede3605ae811a7d7778c21
4
- data.tar.gz: 2c6d68447ef0502ca2d19020659bf09b1821fec4ff741ee5901a142358513701
3
+ metadata.gz: 0f192eab2e6de6818b2a7c45818a4c50207f23e19ca2b74cac2dc75865b9189d
4
+ data.tar.gz: 40de3ca20300414b245bfcad19a83f3265de0867e6aaaa62539aafe2178945ad
5
5
  SHA512:
6
- metadata.gz: cc07ac48782722967f54d33c0aa633891f1f585557b6cb9427cf0d4ae711b5869c318631f17fd90ef5e82fbdfcf6946542e8cf0874b438aa2165818f601bb20d
7
- data.tar.gz: da7fb040ce08572ff69666fe850a3d2bc6d0dd326b040e1c8772f2c4891cef54550baf18d2c558e29b1e9b5ed983a0b016eea6d5345137faaf878bcbbe28d350
6
+ metadata.gz: 81828b0d4e3f5bb54b53dab28178bb89c5a2487f88fb2648e40a7824f3202d2cf1385286c8cd131667e1cf2bb59e5793b9a8c14dea25496b481965478b128d6b
7
+ data.tar.gz: 500f19f44753e9f147db960ea750b085947819774bff014a391992805d70d597866b69b42f911a130543da466cae523350c06b7e41d147b791f28552272a84c1
data/README.md CHANGED
@@ -12,6 +12,28 @@ You can find docs and guides on the [wiki](https://github.com/rubyrpg/ruby_rpg/w
12
12
  For a basic example to get you up off the ground take a look at [hello_ruby_rpg](https://github.com/rubyrpg/hello_ruby_rpg).
13
13
  For some more complex examples you can take a look in the samples folder of this repo.
14
14
 
15
+ ## Development Setup
16
+ If you're working on the engine itself, you'll need to compile the native extensions:
17
+
18
+ ```bash
19
+ bundle install
20
+ bundle exec rake compile
21
+ ```
22
+
23
+ Then you can run the samples:
24
+ ```bash
25
+ bundle exec ruby samples/cubes/cubes.rb
26
+ ```
27
+
28
+ ## Testing
29
+ ```bash
30
+ bundle exec rspec # run all tests
31
+ bundle exec rspec --tag '~system' # skip system tests (faster)
32
+ bundle exec rspec spec/path/to_spec.rb # run specific test
33
+ ```
34
+
35
+ System tests launch the engine and render frames, so they're slower. Use `--tag ~system` for quicker feedback during development.
36
+
15
37
  ## Contributing
16
38
  1. Fork it
17
39
  2. Create your feature branch (`git checkout -b my-new-feature`)
data/bin/build.bash CHANGED
@@ -6,7 +6,7 @@ output_file=$2
6
6
  export BUILDING=true
7
7
 
8
8
  parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
9
- glfw_path=$parent_path/../glfw-3.4.bin.WIN64
9
+ glfw_path=$parent_path/../vendor/glfw-3.4.bin.WIN64
10
10
 
11
11
  ocran $input_file \
12
12
  **/*.png **/*.obj **/*.glsl **/*.vertex_data **/*.index_data **/*.json **/*.csv $glfw_path/**/* src/**/*.rb \
data/bin/import CHANGED
@@ -9,7 +9,6 @@ require_relative '../lib/engine/path'
9
9
  require_relative '../lib/engine/tangent_calculator'
10
10
 
11
11
  require 'fileutils'
12
- require "rmagick"
13
12
  require "matrix"
14
13
 
15
14
  assets_path = ARGV[0]
@@ -19,6 +18,17 @@ FileUtils.mkdir_p(File.join(assets_path, '_imported'))
19
18
 
20
19
  fonts = Dir.glob("#{assets_path}/**/*.ttf")
21
20
  puts "found #{fonts.size} fonts"
21
+ if fonts.any?
22
+ begin
23
+ require "rmagick"
24
+ rescue LoadError
25
+ puts "Error: Font import requires rmagick, which is not installed."
26
+ puts "To install:"
27
+ puts " 1. Install ImageMagick (e.g., `brew install imagemagick` on macOS)"
28
+ puts " 2. Add `gem 'rmagick'` to your Gemfile and run `bundle install`"
29
+ exit 1
30
+ end
31
+ end
22
32
  fonts.each do |font|
23
33
  puts "importing #{font}"
24
34
  destination_image = (font.delete_prefix(assets_path)).gsub(/\.ttf$/, '.png')
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mkmf'
4
+
5
+ # Find OpenGL
6
+ case RUBY_PLATFORM
7
+ when /darwin/
8
+ $LDFLAGS << " -framework OpenGL"
9
+ $CFLAGS << " -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers"
10
+ when /linux/
11
+ have_library('GL') or abort "OpenGL not found"
12
+ when /mingw|mswin/
13
+ glew_dir = File.expand_path('../../../vendor/glew-2.2.0-win32', __FILE__)
14
+ $CFLAGS << " -I#{glew_dir}/include"
15
+ $LDFLAGS << " -L#{glew_dir}/lib/Release/x64"
16
+ have_library('opengl32') or abort "OpenGL not found"
17
+ have_library('glew32') or abort "GLEW not found"
18
+ end
19
+
20
+ create_makefile('gl_native')
@@ -0,0 +1,563 @@
1
+ #include <ruby.h>
2
+
3
+ #ifdef __APPLE__
4
+ #include <OpenGL/gl3.h>
5
+ /* Compute shader functions not in macOS gl3.h - declare for API completeness */
6
+ extern void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
7
+ extern void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
8
+ extern void glMemoryBarrier(GLbitfield barriers);
9
+ #elif defined(_WIN32) || defined(__MINGW32__)
10
+ #include <GL/glew.h>
11
+ #else
12
+ #include <GL/gl.h>
13
+ #endif
14
+
15
+ /* Module reference */
16
+ static VALUE mGLNative;
17
+
18
+ /* BindFramebuffer(target, framebuffer) */
19
+ static VALUE rb_gl_bind_framebuffer(VALUE self, VALUE target, VALUE framebuffer) {
20
+ glBindFramebuffer((GLenum)NUM2INT(target), (GLuint)NUM2UINT(framebuffer));
21
+ return Qnil;
22
+ }
23
+
24
+ /* BindVertexArray(array) */
25
+ static VALUE rb_gl_bind_vertex_array(VALUE self, VALUE array) {
26
+ glBindVertexArray((GLuint)NUM2UINT(array));
27
+ return Qnil;
28
+ }
29
+
30
+ /* BindBuffer(target, buffer) */
31
+ static VALUE rb_gl_bind_buffer(VALUE self, VALUE target, VALUE buffer) {
32
+ glBindBuffer((GLenum)NUM2INT(target), (GLuint)NUM2UINT(buffer));
33
+ return Qnil;
34
+ }
35
+
36
+ /* BindTexture(target, texture) */
37
+ static VALUE rb_gl_bind_texture(VALUE self, VALUE target, VALUE texture) {
38
+ glBindTexture((GLenum)NUM2INT(target), (GLuint)NUM2UINT(texture));
39
+ return Qnil;
40
+ }
41
+
42
+ /* ActiveTexture(texture) */
43
+ static VALUE rb_gl_active_texture(VALUE self, VALUE texture) {
44
+ glActiveTexture((GLenum)NUM2INT(texture));
45
+ return Qnil;
46
+ }
47
+
48
+ /* UseProgram(program) */
49
+ static VALUE rb_gl_use_program(VALUE self, VALUE program) {
50
+ glUseProgram((GLuint)NUM2UINT(program));
51
+ return Qnil;
52
+ }
53
+
54
+ /* Enable(cap) */
55
+ static VALUE rb_gl_enable(VALUE self, VALUE cap) {
56
+ glEnable((GLenum)NUM2INT(cap));
57
+ return Qnil;
58
+ }
59
+
60
+ /* Disable(cap) */
61
+ static VALUE rb_gl_disable(VALUE self, VALUE cap) {
62
+ glDisable((GLenum)NUM2INT(cap));
63
+ return Qnil;
64
+ }
65
+
66
+ /* DrawArrays(mode, first, count) */
67
+ static VALUE rb_gl_draw_arrays(VALUE self, VALUE mode, VALUE first, VALUE count) {
68
+ glDrawArrays((GLenum)NUM2INT(mode), (GLint)NUM2INT(first), (GLsizei)NUM2INT(count));
69
+ return Qnil;
70
+ }
71
+
72
+ /* DrawElements(mode, count, type, indices) */
73
+ static VALUE rb_gl_draw_elements(VALUE self, VALUE mode, VALUE count, VALUE type, VALUE indices) {
74
+ glDrawElements((GLenum)NUM2INT(mode), (GLsizei)NUM2INT(count), (GLenum)NUM2INT(type), (const void*)(uintptr_t)NUM2ULL(indices));
75
+ return Qnil;
76
+ }
77
+
78
+ /* DrawElementsInstanced(mode, count, type, indices, instance_count) */
79
+ static VALUE rb_gl_draw_elements_instanced(VALUE self, VALUE mode, VALUE count, VALUE type, VALUE indices, VALUE instance_count) {
80
+ glDrawElementsInstanced((GLenum)NUM2INT(mode), (GLsizei)NUM2INT(count), (GLenum)NUM2INT(type), (const void*)(uintptr_t)NUM2ULL(indices), (GLsizei)NUM2INT(instance_count));
81
+ return Qnil;
82
+ }
83
+
84
+ /* Clear(mask) */
85
+ static VALUE rb_gl_clear(VALUE self, VALUE mask) {
86
+ glClear((GLbitfield)NUM2UINT(mask));
87
+ return Qnil;
88
+ }
89
+
90
+ /* Viewport(x, y, width, height) */
91
+ static VALUE rb_gl_viewport(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height) {
92
+ glViewport((GLint)NUM2INT(x), (GLint)NUM2INT(y), (GLsizei)NUM2INT(width), (GLsizei)NUM2INT(height));
93
+ return Qnil;
94
+ }
95
+
96
+ /* Uniform1f(location, v0) */
97
+ static VALUE rb_gl_uniform1f(VALUE self, VALUE location, VALUE v0) {
98
+ glUniform1f((GLint)NUM2INT(location), (GLfloat)NUM2DBL(v0));
99
+ return Qnil;
100
+ }
101
+
102
+ /* Uniform2f(location, v0, v1) */
103
+ static VALUE rb_gl_uniform2f(VALUE self, VALUE location, VALUE v0, VALUE v1) {
104
+ glUniform2f((GLint)NUM2INT(location), (GLfloat)NUM2DBL(v0), (GLfloat)NUM2DBL(v1));
105
+ return Qnil;
106
+ }
107
+
108
+ /* Uniform3f(location, v0, v1, v2) */
109
+ static VALUE rb_gl_uniform3f(VALUE self, VALUE location, VALUE v0, VALUE v1, VALUE v2) {
110
+ glUniform3f((GLint)NUM2INT(location), (GLfloat)NUM2DBL(v0), (GLfloat)NUM2DBL(v1), (GLfloat)NUM2DBL(v2));
111
+ return Qnil;
112
+ }
113
+
114
+ /* Uniform4f(location, v0, v1, v2, v3) */
115
+ static VALUE rb_gl_uniform4f(VALUE self, VALUE location, VALUE v0, VALUE v1, VALUE v2, VALUE v3) {
116
+ glUniform4f((GLint)NUM2INT(location), (GLfloat)NUM2DBL(v0), (GLfloat)NUM2DBL(v1), (GLfloat)NUM2DBL(v2), (GLfloat)NUM2DBL(v3));
117
+ return Qnil;
118
+ }
119
+
120
+ /* Uniform1i(location, v0) */
121
+ static VALUE rb_gl_uniform1i(VALUE self, VALUE location, VALUE v0) {
122
+ glUniform1i((GLint)NUM2INT(location), (GLint)NUM2INT(v0));
123
+ return Qnil;
124
+ }
125
+
126
+ /* UniformMatrix4fv(location, count, transpose, value) */
127
+ static VALUE rb_gl_uniform_matrix4fv(VALUE self, VALUE location, VALUE count, VALUE transpose, VALUE value) {
128
+ /* value should be a String containing packed floats */
129
+ Check_Type(value, T_STRING);
130
+ const GLfloat *data = (const GLfloat *)RSTRING_PTR(value);
131
+ glUniformMatrix4fv((GLint)NUM2INT(location), (GLsizei)NUM2INT(count), (GLboolean)NUM2INT(transpose), data);
132
+ return Qnil;
133
+ }
134
+
135
+ /* BlitFramebuffer(...) */
136
+ static VALUE rb_gl_blit_framebuffer(VALUE self, VALUE src_x0, VALUE src_y0, VALUE src_x1, VALUE src_y1,
137
+ VALUE dst_x0, VALUE dst_y0, VALUE dst_x1, VALUE dst_y1,
138
+ VALUE mask, VALUE filter) {
139
+ glBlitFramebuffer(
140
+ (GLint)NUM2INT(src_x0), (GLint)NUM2INT(src_y0), (GLint)NUM2INT(src_x1), (GLint)NUM2INT(src_y1),
141
+ (GLint)NUM2INT(dst_x0), (GLint)NUM2INT(dst_y0), (GLint)NUM2INT(dst_x1), (GLint)NUM2INT(dst_y1),
142
+ (GLbitfield)NUM2UINT(mask), (GLenum)NUM2INT(filter)
143
+ );
144
+ return Qnil;
145
+ }
146
+
147
+ /* AttachShader(program, shader) */
148
+ static VALUE rb_gl_attach_shader(VALUE self, VALUE program, VALUE shader) {
149
+ glAttachShader((GLuint)NUM2UINT(program), (GLuint)NUM2UINT(shader));
150
+ return Qnil;
151
+ }
152
+
153
+ /* BeginQuery(target, id) */
154
+ static VALUE rb_gl_begin_query(VALUE self, VALUE target, VALUE id) {
155
+ glBeginQuery((GLenum)NUM2INT(target), (GLuint)NUM2UINT(id));
156
+ return Qnil;
157
+ }
158
+
159
+ /* BlendFunc(sfactor, dfactor) */
160
+ static VALUE rb_gl_blend_func(VALUE self, VALUE sfactor, VALUE dfactor) {
161
+ glBlendFunc((GLenum)NUM2INT(sfactor), (GLenum)NUM2INT(dfactor));
162
+ return Qnil;
163
+ }
164
+
165
+ /* BufferData(target, size, data, usage) */
166
+ static VALUE rb_gl_buffer_data(VALUE self, VALUE target, VALUE size, VALUE data, VALUE usage) {
167
+ const void *ptr = NIL_P(data) ? NULL : (const void *)RSTRING_PTR(data);
168
+ glBufferData((GLenum)NUM2INT(target), (GLsizeiptr)NUM2LONG(size), ptr, (GLenum)NUM2INT(usage));
169
+ return Qnil;
170
+ }
171
+
172
+ /* BufferSubData(target, offset, size, data) */
173
+ static VALUE rb_gl_buffer_sub_data(VALUE self, VALUE target, VALUE offset, VALUE size, VALUE data) {
174
+ const void *ptr = (const void *)RSTRING_PTR(data);
175
+ glBufferSubData((GLenum)NUM2INT(target), (GLintptr)NUM2LONG(offset), (GLsizeiptr)NUM2LONG(size), ptr);
176
+ return Qnil;
177
+ }
178
+
179
+ /* CheckFramebufferStatus(target) */
180
+ static VALUE rb_gl_check_framebuffer_status(VALUE self, VALUE target) {
181
+ GLenum result = glCheckFramebufferStatus((GLenum)NUM2INT(target));
182
+ return INT2NUM(result);
183
+ }
184
+
185
+ /* ClearColor(red, green, blue, alpha) */
186
+ static VALUE rb_gl_clear_color(VALUE self, VALUE red, VALUE green, VALUE blue, VALUE alpha) {
187
+ glClearColor((GLfloat)NUM2DBL(red), (GLfloat)NUM2DBL(green), (GLfloat)NUM2DBL(blue), (GLfloat)NUM2DBL(alpha));
188
+ return Qnil;
189
+ }
190
+
191
+ /* ColorMask(red, green, blue, alpha) */
192
+ static VALUE rb_gl_color_mask(VALUE self, VALUE red, VALUE green, VALUE blue, VALUE alpha) {
193
+ glColorMask((GLboolean)NUM2INT(red), (GLboolean)NUM2INT(green), (GLboolean)NUM2INT(blue), (GLboolean)NUM2INT(alpha));
194
+ return Qnil;
195
+ }
196
+
197
+ /* CompileShader(shader) */
198
+ static VALUE rb_gl_compile_shader(VALUE self, VALUE shader) {
199
+ glCompileShader((GLuint)NUM2UINT(shader));
200
+ return Qnil;
201
+ }
202
+
203
+ /* CreateProgram() */
204
+ static VALUE rb_gl_create_program(VALUE self) {
205
+ GLuint program = glCreateProgram();
206
+ return UINT2NUM(program);
207
+ }
208
+
209
+ /* CreateShader(type) */
210
+ static VALUE rb_gl_create_shader(VALUE self, VALUE type) {
211
+ GLuint shader = glCreateShader((GLenum)NUM2INT(type));
212
+ return UINT2NUM(shader);
213
+ }
214
+
215
+ /* CullFace(mode) */
216
+ static VALUE rb_gl_cull_face(VALUE self, VALUE mode) {
217
+ glCullFace((GLenum)NUM2INT(mode));
218
+ return Qnil;
219
+ }
220
+
221
+ /* DepthFunc(func) */
222
+ static VALUE rb_gl_depth_func(VALUE self, VALUE func) {
223
+ glDepthFunc((GLenum)NUM2INT(func));
224
+ return Qnil;
225
+ }
226
+
227
+ /* DrawBuffer(mode) */
228
+ static VALUE rb_gl_draw_buffer(VALUE self, VALUE mode) {
229
+ glDrawBuffer((GLenum)NUM2INT(mode));
230
+ return Qnil;
231
+ }
232
+
233
+ /* DrawBuffers(n, bufs) */
234
+ static VALUE rb_gl_draw_buffers(VALUE self, VALUE n, VALUE bufs) {
235
+ const GLenum *ptr = (const GLenum *)RSTRING_PTR(bufs);
236
+ glDrawBuffers((GLsizei)NUM2INT(n), ptr);
237
+ return Qnil;
238
+ }
239
+
240
+ /* EnableVertexAttribArray(index) */
241
+ static VALUE rb_gl_enable_vertex_attrib_array(VALUE self, VALUE index) {
242
+ glEnableVertexAttribArray((GLuint)NUM2UINT(index));
243
+ return Qnil;
244
+ }
245
+
246
+ /* EndQuery(target) */
247
+ static VALUE rb_gl_end_query(VALUE self, VALUE target) {
248
+ glEndQuery((GLenum)NUM2INT(target));
249
+ return Qnil;
250
+ }
251
+
252
+ /* Finish() */
253
+ static VALUE rb_gl_finish(VALUE self) {
254
+ glFinish();
255
+ return Qnil;
256
+ }
257
+
258
+ /* FramebufferTexture2D(target, attachment, textarget, texture, level) */
259
+ static VALUE rb_gl_framebuffer_texture_2d(VALUE self, VALUE target, VALUE attachment, VALUE textarget, VALUE texture, VALUE level) {
260
+ glFramebufferTexture2D((GLenum)NUM2INT(target), (GLenum)NUM2INT(attachment), (GLenum)NUM2INT(textarget), (GLuint)NUM2UINT(texture), (GLint)NUM2INT(level));
261
+ return Qnil;
262
+ }
263
+
264
+ /* FramebufferTextureLayer(target, attachment, texture, level, layer) */
265
+ static VALUE rb_gl_framebuffer_texture_layer(VALUE self, VALUE target, VALUE attachment, VALUE texture, VALUE level, VALUE layer) {
266
+ glFramebufferTextureLayer((GLenum)NUM2INT(target), (GLenum)NUM2INT(attachment), (GLuint)NUM2UINT(texture), (GLint)NUM2INT(level), (GLint)NUM2INT(layer));
267
+ return Qnil;
268
+ }
269
+
270
+ /* GenBuffers(n, buffers) */
271
+ static VALUE rb_gl_gen_buffers(VALUE self, VALUE n, VALUE buffers) {
272
+ GLuint *ptr = (GLuint *)RSTRING_PTR(buffers);
273
+ glGenBuffers((GLsizei)NUM2INT(n), ptr);
274
+ return Qnil;
275
+ }
276
+
277
+ /* GenerateMipmap(target) */
278
+ static VALUE rb_gl_generate_mipmap(VALUE self, VALUE target) {
279
+ glGenerateMipmap((GLenum)NUM2INT(target));
280
+ return Qnil;
281
+ }
282
+
283
+ /* GenFramebuffers(n, framebuffers) */
284
+ static VALUE rb_gl_gen_framebuffers(VALUE self, VALUE n, VALUE framebuffers) {
285
+ GLuint *ptr = (GLuint *)RSTRING_PTR(framebuffers);
286
+ glGenFramebuffers((GLsizei)NUM2INT(n), ptr);
287
+ return Qnil;
288
+ }
289
+
290
+ /* GenQueries(n, ids) */
291
+ static VALUE rb_gl_gen_queries(VALUE self, VALUE n, VALUE ids) {
292
+ GLuint *ptr = (GLuint *)RSTRING_PTR(ids);
293
+ glGenQueries((GLsizei)NUM2INT(n), ptr);
294
+ return Qnil;
295
+ }
296
+
297
+ /* GenTextures(n, textures) */
298
+ static VALUE rb_gl_gen_textures(VALUE self, VALUE n, VALUE textures) {
299
+ GLuint *ptr = (GLuint *)RSTRING_PTR(textures);
300
+ glGenTextures((GLsizei)NUM2INT(n), ptr);
301
+ return Qnil;
302
+ }
303
+
304
+ /* GenVertexArrays(n, arrays) */
305
+ static VALUE rb_gl_gen_vertex_arrays(VALUE self, VALUE n, VALUE arrays) {
306
+ GLuint *ptr = (GLuint *)RSTRING_PTR(arrays);
307
+ glGenVertexArrays((GLsizei)NUM2INT(n), ptr);
308
+ return Qnil;
309
+ }
310
+
311
+ /* GetError() */
312
+ static VALUE rb_gl_get_error(VALUE self) {
313
+ GLenum error = glGetError();
314
+ return INT2NUM(error);
315
+ }
316
+
317
+ /* GetProgramInfoLog(program, max_length, length, info_log) */
318
+ static VALUE rb_gl_get_program_info_log(VALUE self, VALUE program, VALUE max_length, VALUE length, VALUE info_log) {
319
+ GLsizei *len_ptr = (GLsizei *)RSTRING_PTR(length);
320
+ GLchar *log_ptr = (GLchar *)RSTRING_PTR(info_log);
321
+ glGetProgramInfoLog((GLuint)NUM2UINT(program), (GLsizei)NUM2INT(max_length), len_ptr, log_ptr);
322
+ return Qnil;
323
+ }
324
+
325
+ /* GetProgramiv(program, pname, params) */
326
+ static VALUE rb_gl_get_programiv(VALUE self, VALUE program, VALUE pname, VALUE params) {
327
+ GLint *ptr = (GLint *)RSTRING_PTR(params);
328
+ glGetProgramiv((GLuint)NUM2UINT(program), (GLenum)NUM2INT(pname), ptr);
329
+ return Qnil;
330
+ }
331
+
332
+ /* GetQueryObjectui64v(id, pname, params) */
333
+ static VALUE rb_gl_get_query_objectui64v(VALUE self, VALUE id, VALUE pname, VALUE params) {
334
+ GLuint64 *ptr = (GLuint64 *)RSTRING_PTR(params);
335
+ glGetQueryObjectui64v((GLuint)NUM2UINT(id), (GLenum)NUM2INT(pname), ptr);
336
+ return Qnil;
337
+ }
338
+
339
+ /* GetShaderInfoLog(shader, max_length, length, info_log) */
340
+ static VALUE rb_gl_get_shader_info_log(VALUE self, VALUE shader, VALUE max_length, VALUE length, VALUE info_log) {
341
+ GLsizei *len_ptr = (GLsizei *)RSTRING_PTR(length);
342
+ GLchar *log_ptr = (GLchar *)RSTRING_PTR(info_log);
343
+ glGetShaderInfoLog((GLuint)NUM2UINT(shader), (GLsizei)NUM2INT(max_length), len_ptr, log_ptr);
344
+ return Qnil;
345
+ }
346
+
347
+ /* GetString(name) */
348
+ static VALUE rb_gl_get_string(VALUE self, VALUE name) {
349
+ const GLubyte *str = glGetString((GLenum)NUM2INT(name));
350
+ if (str == NULL) return Qnil;
351
+ return rb_str_new2((const char *)str);
352
+ }
353
+
354
+ /* GetUniformLocation(program, name) */
355
+ static VALUE rb_gl_get_uniform_location(VALUE self, VALUE program, VALUE name) {
356
+ const char *name_str = StringValueCStr(name);
357
+ GLint location = glGetUniformLocation((GLuint)NUM2UINT(program), name_str);
358
+ return INT2NUM(location);
359
+ }
360
+
361
+ /* LinkProgram(program) */
362
+ static VALUE rb_gl_link_program(VALUE self, VALUE program) {
363
+ glLinkProgram((GLuint)NUM2UINT(program));
364
+ return Qnil;
365
+ }
366
+
367
+ /* ReadBuffer(mode) */
368
+ static VALUE rb_gl_read_buffer(VALUE self, VALUE mode) {
369
+ glReadBuffer((GLenum)NUM2INT(mode));
370
+ return Qnil;
371
+ }
372
+
373
+ /* ReadPixels(x, y, width, height, format, type, data) */
374
+ static VALUE rb_gl_read_pixels(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height, VALUE format, VALUE type, VALUE data) {
375
+ void *ptr = (void *)RSTRING_PTR(data);
376
+ glReadPixels((GLint)NUM2INT(x), (GLint)NUM2INT(y), (GLsizei)NUM2INT(width), (GLsizei)NUM2INT(height), (GLenum)NUM2INT(format), (GLenum)NUM2INT(type), ptr);
377
+ return Qnil;
378
+ }
379
+
380
+ /* ShaderSource(shader, count, string, length) */
381
+ static VALUE rb_gl_shader_source(VALUE self, VALUE shader, VALUE count, VALUE string, VALUE length) {
382
+ /* string is a packed pointer array (from Ruby's pack('p')) */
383
+ /* length is a packed int array (from Ruby's pack('I')) */
384
+ const GLchar **src_ptr = (const GLchar **)RSTRING_PTR(string);
385
+ const GLint *len_ptr = NIL_P(length) ? NULL : (const GLint *)RSTRING_PTR(length);
386
+ glShaderSource((GLuint)NUM2UINT(shader), (GLsizei)NUM2INT(count), src_ptr, len_ptr);
387
+ return Qnil;
388
+ }
389
+
390
+ /* StencilFunc(func, ref, mask) */
391
+ static VALUE rb_gl_stencil_func(VALUE self, VALUE func, VALUE ref, VALUE mask) {
392
+ glStencilFunc((GLenum)NUM2INT(func), (GLint)NUM2INT(ref), (GLuint)NUM2UINT(mask));
393
+ return Qnil;
394
+ }
395
+
396
+ /* StencilMask(mask) */
397
+ static VALUE rb_gl_stencil_mask(VALUE self, VALUE mask) {
398
+ glStencilMask((GLuint)NUM2UINT(mask));
399
+ return Qnil;
400
+ }
401
+
402
+ /* StencilOp(sfail, dpfail, dppass) */
403
+ static VALUE rb_gl_stencil_op(VALUE self, VALUE sfail, VALUE dpfail, VALUE dppass) {
404
+ glStencilOp((GLenum)NUM2INT(sfail), (GLenum)NUM2INT(dpfail), (GLenum)NUM2INT(dppass));
405
+ return Qnil;
406
+ }
407
+
408
+ /* TexImage2D(target, level, internalformat, width, height, border, format, type, data) */
409
+ static VALUE rb_gl_tex_image_2d(VALUE self, VALUE target, VALUE level, VALUE internalformat,
410
+ VALUE width, VALUE height, VALUE border, VALUE format,
411
+ VALUE type, VALUE data) {
412
+ const void *ptr = NIL_P(data) ? NULL : (const void *)RSTRING_PTR(data);
413
+ glTexImage2D((GLenum)NUM2INT(target), (GLint)NUM2INT(level), (GLint)NUM2INT(internalformat),
414
+ (GLsizei)NUM2INT(width), (GLsizei)NUM2INT(height), (GLint)NUM2INT(border),
415
+ (GLenum)NUM2INT(format), (GLenum)NUM2INT(type), ptr);
416
+ return Qnil;
417
+ }
418
+
419
+ /* TexImage3D(target, level, internalformat, width, height, depth, border, format, type, data) */
420
+ static VALUE rb_gl_tex_image_3d(VALUE self, VALUE target, VALUE level, VALUE internalformat,
421
+ VALUE width, VALUE height, VALUE depth, VALUE border,
422
+ VALUE format, VALUE type, VALUE data) {
423
+ const void *ptr = NIL_P(data) ? NULL : (const void *)RSTRING_PTR(data);
424
+ glTexImage3D((GLenum)NUM2INT(target), (GLint)NUM2INT(level), (GLint)NUM2INT(internalformat),
425
+ (GLsizei)NUM2INT(width), (GLsizei)NUM2INT(height), (GLsizei)NUM2INT(depth),
426
+ (GLint)NUM2INT(border), (GLenum)NUM2INT(format), (GLenum)NUM2INT(type), ptr);
427
+ return Qnil;
428
+ }
429
+
430
+ /* TexParameterfv(target, pname, params) */
431
+ static VALUE rb_gl_tex_parameterfv(VALUE self, VALUE target, VALUE pname, VALUE params) {
432
+ const GLfloat *ptr = (const GLfloat *)RSTRING_PTR(params);
433
+ glTexParameterfv((GLenum)NUM2INT(target), (GLenum)NUM2INT(pname), ptr);
434
+ return Qnil;
435
+ }
436
+
437
+ /* TexParameteri(target, pname, param) */
438
+ static VALUE rb_gl_tex_parameteri(VALUE self, VALUE target, VALUE pname, VALUE param) {
439
+ glTexParameteri((GLenum)NUM2INT(target), (GLenum)NUM2INT(pname), (GLint)NUM2INT(param));
440
+ return Qnil;
441
+ }
442
+
443
+ /* VertexAttribDivisor(index, divisor) */
444
+ static VALUE rb_gl_vertex_attrib_divisor(VALUE self, VALUE index, VALUE divisor) {
445
+ glVertexAttribDivisor((GLuint)NUM2UINT(index), (GLuint)NUM2UINT(divisor));
446
+ return Qnil;
447
+ }
448
+
449
+ /* VertexAttribIPointer(index, size, type, stride, pointer) */
450
+ static VALUE rb_gl_vertex_attrib_ipointer(VALUE self, VALUE index, VALUE size, VALUE type, VALUE stride, VALUE pointer) {
451
+ glVertexAttribIPointer((GLuint)NUM2UINT(index), (GLint)NUM2INT(size), (GLenum)NUM2INT(type),
452
+ (GLsizei)NUM2INT(stride), (const void *)(uintptr_t)NUM2ULL(pointer));
453
+ return Qnil;
454
+ }
455
+
456
+ /* VertexAttribPointer(index, size, type, normalized, stride, pointer) */
457
+ static VALUE rb_gl_vertex_attrib_pointer(VALUE self, VALUE index, VALUE size, VALUE type, VALUE normalized, VALUE stride, VALUE pointer) {
458
+ glVertexAttribPointer((GLuint)NUM2UINT(index), (GLint)NUM2INT(size), (GLenum)NUM2INT(type),
459
+ (GLboolean)NUM2INT(normalized), (GLsizei)NUM2INT(stride),
460
+ (const void *)(uintptr_t)NUM2ULL(pointer));
461
+ return Qnil;
462
+ }
463
+
464
+ /* Compute shader functions - OpenGL 4.3+ */
465
+
466
+ /* BindImageTexture(unit, texture, level, layered, layer, access, format) */
467
+ static VALUE rb_gl_bind_image_texture(VALUE self, VALUE unit, VALUE texture, VALUE level,
468
+ VALUE layered, VALUE layer, VALUE access, VALUE format) {
469
+ glBindImageTexture((GLuint)NUM2UINT(unit), (GLuint)NUM2UINT(texture), (GLint)NUM2INT(level),
470
+ (GLboolean)NUM2INT(layered), (GLint)NUM2INT(layer),
471
+ (GLenum)NUM2INT(access), (GLenum)NUM2INT(format));
472
+ return Qnil;
473
+ }
474
+
475
+ /* DispatchCompute(num_groups_x, num_groups_y, num_groups_z) */
476
+ static VALUE rb_gl_dispatch_compute(VALUE self, VALUE num_groups_x, VALUE num_groups_y, VALUE num_groups_z) {
477
+ glDispatchCompute((GLuint)NUM2UINT(num_groups_x), (GLuint)NUM2UINT(num_groups_y), (GLuint)NUM2UINT(num_groups_z));
478
+ return Qnil;
479
+ }
480
+
481
+ /* MemoryBarrier(barriers) */
482
+ static VALUE rb_gl_memory_barrier(VALUE self, VALUE barriers) {
483
+ glMemoryBarrier((GLbitfield)NUM2UINT(barriers));
484
+ return Qnil;
485
+ }
486
+
487
+ /* Extension init */
488
+ void Init_gl_native(void) {
489
+ mGLNative = rb_define_module("GLNative");
490
+
491
+ rb_define_module_function(mGLNative, "bind_framebuffer", rb_gl_bind_framebuffer, 2);
492
+ rb_define_module_function(mGLNative, "bind_vertex_array", rb_gl_bind_vertex_array, 1);
493
+ rb_define_module_function(mGLNative, "bind_buffer", rb_gl_bind_buffer, 2);
494
+ rb_define_module_function(mGLNative, "bind_texture", rb_gl_bind_texture, 2);
495
+ rb_define_module_function(mGLNative, "active_texture", rb_gl_active_texture, 1);
496
+ rb_define_module_function(mGLNative, "use_program", rb_gl_use_program, 1);
497
+ rb_define_module_function(mGLNative, "enable", rb_gl_enable, 1);
498
+ rb_define_module_function(mGLNative, "disable", rb_gl_disable, 1);
499
+ rb_define_module_function(mGLNative, "draw_arrays", rb_gl_draw_arrays, 3);
500
+ rb_define_module_function(mGLNative, "draw_elements", rb_gl_draw_elements, 4);
501
+ rb_define_module_function(mGLNative, "draw_elements_instanced", rb_gl_draw_elements_instanced, 5);
502
+ rb_define_module_function(mGLNative, "clear", rb_gl_clear, 1);
503
+ rb_define_module_function(mGLNative, "viewport", rb_gl_viewport, 4);
504
+ rb_define_module_function(mGLNative, "uniform1f", rb_gl_uniform1f, 2);
505
+ rb_define_module_function(mGLNative, "uniform2f", rb_gl_uniform2f, 3);
506
+ rb_define_module_function(mGLNative, "uniform3f", rb_gl_uniform3f, 4);
507
+ rb_define_module_function(mGLNative, "uniform4f", rb_gl_uniform4f, 5);
508
+ rb_define_module_function(mGLNative, "uniform1i", rb_gl_uniform1i, 2);
509
+ rb_define_module_function(mGLNative, "uniform_matrix4fv", rb_gl_uniform_matrix4fv, 4);
510
+ rb_define_module_function(mGLNative, "blit_framebuffer", rb_gl_blit_framebuffer, 10);
511
+ rb_define_module_function(mGLNative, "attach_shader", rb_gl_attach_shader, 2);
512
+ rb_define_module_function(mGLNative, "begin_query", rb_gl_begin_query, 2);
513
+ rb_define_module_function(mGLNative, "blend_func", rb_gl_blend_func, 2);
514
+ rb_define_module_function(mGLNative, "buffer_data", rb_gl_buffer_data, 4);
515
+ rb_define_module_function(mGLNative, "buffer_sub_data", rb_gl_buffer_sub_data, 4);
516
+ rb_define_module_function(mGLNative, "check_framebuffer_status", rb_gl_check_framebuffer_status, 1);
517
+ rb_define_module_function(mGLNative, "clear_color", rb_gl_clear_color, 4);
518
+ rb_define_module_function(mGLNative, "color_mask", rb_gl_color_mask, 4);
519
+ rb_define_module_function(mGLNative, "compile_shader", rb_gl_compile_shader, 1);
520
+ rb_define_module_function(mGLNative, "create_program", rb_gl_create_program, 0);
521
+ rb_define_module_function(mGLNative, "create_shader", rb_gl_create_shader, 1);
522
+ rb_define_module_function(mGLNative, "cull_face", rb_gl_cull_face, 1);
523
+ rb_define_module_function(mGLNative, "depth_func", rb_gl_depth_func, 1);
524
+ rb_define_module_function(mGLNative, "draw_buffer", rb_gl_draw_buffer, 1);
525
+ rb_define_module_function(mGLNative, "draw_buffers", rb_gl_draw_buffers, 2);
526
+ rb_define_module_function(mGLNative, "enable_vertex_attrib_array", rb_gl_enable_vertex_attrib_array, 1);
527
+ rb_define_module_function(mGLNative, "end_query", rb_gl_end_query, 1);
528
+ rb_define_module_function(mGLNative, "finish", rb_gl_finish, 0);
529
+ rb_define_module_function(mGLNative, "framebuffer_texture_2d", rb_gl_framebuffer_texture_2d, 5);
530
+ rb_define_module_function(mGLNative, "framebuffer_texture_layer", rb_gl_framebuffer_texture_layer, 5);
531
+ rb_define_module_function(mGLNative, "gen_buffers", rb_gl_gen_buffers, 2);
532
+ rb_define_module_function(mGLNative, "generate_mipmap", rb_gl_generate_mipmap, 1);
533
+ rb_define_module_function(mGLNative, "gen_framebuffers", rb_gl_gen_framebuffers, 2);
534
+ rb_define_module_function(mGLNative, "gen_queries", rb_gl_gen_queries, 2);
535
+ rb_define_module_function(mGLNative, "gen_textures", rb_gl_gen_textures, 2);
536
+ rb_define_module_function(mGLNative, "gen_vertex_arrays", rb_gl_gen_vertex_arrays, 2);
537
+ rb_define_module_function(mGLNative, "get_error", rb_gl_get_error, 0);
538
+ rb_define_module_function(mGLNative, "get_program_info_log", rb_gl_get_program_info_log, 4);
539
+ rb_define_module_function(mGLNative, "get_programiv", rb_gl_get_programiv, 3);
540
+ rb_define_module_function(mGLNative, "get_query_objectui64v", rb_gl_get_query_objectui64v, 3);
541
+ rb_define_module_function(mGLNative, "get_shader_info_log", rb_gl_get_shader_info_log, 4);
542
+ rb_define_module_function(mGLNative, "get_string", rb_gl_get_string, 1);
543
+ rb_define_module_function(mGLNative, "get_uniform_location", rb_gl_get_uniform_location, 2);
544
+ rb_define_module_function(mGLNative, "link_program", rb_gl_link_program, 1);
545
+ rb_define_module_function(mGLNative, "read_buffer", rb_gl_read_buffer, 1);
546
+ rb_define_module_function(mGLNative, "read_pixels", rb_gl_read_pixels, 7);
547
+ rb_define_module_function(mGLNative, "shader_source", rb_gl_shader_source, 4);
548
+ rb_define_module_function(mGLNative, "stencil_func", rb_gl_stencil_func, 3);
549
+ rb_define_module_function(mGLNative, "stencil_mask", rb_gl_stencil_mask, 1);
550
+ rb_define_module_function(mGLNative, "stencil_op", rb_gl_stencil_op, 3);
551
+ rb_define_module_function(mGLNative, "tex_image_2d", rb_gl_tex_image_2d, 9);
552
+ rb_define_module_function(mGLNative, "tex_image_3d", rb_gl_tex_image_3d, 10);
553
+ rb_define_module_function(mGLNative, "tex_parameterfv", rb_gl_tex_parameterfv, 3);
554
+ rb_define_module_function(mGLNative, "tex_parameteri", rb_gl_tex_parameteri, 3);
555
+ rb_define_module_function(mGLNative, "vertex_attrib_divisor", rb_gl_vertex_attrib_divisor, 2);
556
+ rb_define_module_function(mGLNative, "vertex_attrib_ipointer", rb_gl_vertex_attrib_ipointer, 5);
557
+ rb_define_module_function(mGLNative, "vertex_attrib_pointer", rb_gl_vertex_attrib_pointer, 6);
558
+
559
+ /* Compute shader functions - OpenGL 4.3+ */
560
+ rb_define_module_function(mGLNative, "bind_image_texture", rb_gl_bind_image_texture, 7);
561
+ rb_define_module_function(mGLNative, "dispatch_compute", rb_gl_dispatch_compute, 3);
562
+ rb_define_module_function(mGLNative, "memory_barrier", rb_gl_memory_barrier, 1);
563
+ }
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mkmf'
4
+
5
+ # We use dlopen to dynamically load GLFW at runtime, so no library linking needed
6
+ # Just need to compile with position-independent code
7
+
8
+ case RUBY_PLATFORM
9
+ when /darwin/
10
+ # macOS: we'll dlopen the bundled libglfw.3.dylib
11
+ $LDFLAGS << " -ldl"
12
+ when /linux/
13
+ $LDFLAGS << " -ldl"
14
+ when /mingw|mswin/
15
+ # Windows uses LoadLibrary, no extra flags needed
16
+ end
17
+
18
+ create_makefile('glfw_native')