raylib 4.5.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +16 -0
  3. data/README.md +97 -0
  4. data/lib/raylib/core/callbacks.rb +19 -0
  5. data/lib/raylib/core/colors.rb +32 -0
  6. data/lib/raylib/core/enums.rb +694 -0
  7. data/lib/raylib/core/functions.rb +1552 -0
  8. data/lib/raylib/core/structs/audio_stream.rb +71 -0
  9. data/lib/raylib/core/structs/bone_info.rb +38 -0
  10. data/lib/raylib/core/structs/bounding_box.rb +38 -0
  11. data/lib/raylib/core/structs/camera2_d.rb +60 -0
  12. data/lib/raylib/core/structs/camera3_d.rb +74 -0
  13. data/lib/raylib/core/structs/color.rb +60 -0
  14. data/lib/raylib/core/structs/file_path_list.rb +51 -0
  15. data/lib/raylib/core/structs/font.rb +82 -0
  16. data/lib/raylib/core/structs/glyph_info.rb +71 -0
  17. data/lib/raylib/core/structs/image.rb +71 -0
  18. data/lib/raylib/core/structs/material.rb +49 -0
  19. data/lib/raylib/core/structs/material_map.rb +49 -0
  20. data/lib/raylib/core/structs/matrix.rb +192 -0
  21. data/lib/raylib/core/structs/mesh.rb +181 -0
  22. data/lib/raylib/core/structs/model.rb +115 -0
  23. data/lib/raylib/core/structs/model_animation.rb +60 -0
  24. data/lib/raylib/core/structs/music.rb +71 -0
  25. data/lib/raylib/core/structs/n_patch_info.rb +82 -0
  26. data/lib/raylib/core/structs/ray.rb +38 -0
  27. data/lib/raylib/core/structs/ray_collision.rb +60 -0
  28. data/lib/raylib/core/structs/rectangle.rb +60 -0
  29. data/lib/raylib/core/structs/render_texture.rb +52 -0
  30. data/lib/raylib/core/structs/shader.rb +38 -0
  31. data/lib/raylib/core/structs/sound.rb +38 -0
  32. data/lib/raylib/core/structs/texture.rb +77 -0
  33. data/lib/raylib/core/structs/transform.rb +49 -0
  34. data/lib/raylib/core/structs/vector2.rb +38 -0
  35. data/lib/raylib/core/structs/vector3.rb +49 -0
  36. data/lib/raylib/core/structs/vector4.rb +63 -0
  37. data/lib/raylib/core/structs/vr_device_info.rb +126 -0
  38. data/lib/raylib/core/structs/vr_stereo_config.rb +104 -0
  39. data/lib/raylib/core/structs/wave.rb +71 -0
  40. data/lib/raylib/core/structs.rb +32 -0
  41. data/lib/raylib/core.rb +5 -0
  42. data/lib/raylib/dsl.rb +2 -0
  43. data/lib/raylib/raymath/functions.rb +337 -0
  44. data/lib/raylib/raymath/structs/float16.rb +27 -0
  45. data/lib/raylib/raymath/structs/float3.rb +27 -0
  46. data/lib/raylib/raymath/structs.rb +2 -0
  47. data/lib/raylib/raymath.rb +2 -0
  48. data/lib/raylib/rlgl/callbacks.rb +4 -0
  49. data/lib/raylib/rlgl/enums.rb +270 -0
  50. data/lib/raylib/rlgl/functions.rb +448 -0
  51. data/lib/raylib/rlgl/structs/rl_draw_call.rb +60 -0
  52. data/lib/raylib/rlgl/structs/rl_render_batch.rb +82 -0
  53. data/lib/raylib/rlgl/structs/rl_vertex_buffer.rb +93 -0
  54. data/lib/raylib/rlgl/structs.rb +3 -0
  55. data/lib/raylib/rlgl.rb +4 -0
  56. data/lib/raylib/version.rb +5 -0
  57. data/lib/raylib.rb +12 -0
  58. metadata +162 -0
@@ -0,0 +1,448 @@
1
+ module Raylib
2
+ # Choose the current matrix to be transformed
3
+ attach_function :rl_matrix_mode, :rlMatrixMode, [:int], :void
4
+
5
+ # Push the current matrix to stack
6
+ attach_function :rl_push_matrix, :rlPushMatrix, [], :void
7
+
8
+ # Pop latest inserted matrix from stack
9
+ attach_function :rl_pop_matrix, :rlPopMatrix, [], :void
10
+
11
+ # Reset current matrix to identity matrix
12
+ attach_function :rl_load_identity, :rlLoadIdentity, [], :void
13
+
14
+ # Multiply the current matrix by a translation matrix
15
+ attach_function :rl_translatef, :rlTranslatef, [:float, :float, :float], :void
16
+
17
+ # Multiply the current matrix by a rotation matrix
18
+ attach_function :rl_rotatef, :rlRotatef, [:float, :float, :float, :float], :void
19
+
20
+ # Multiply the current matrix by a scaling matrix
21
+ attach_function :rl_scalef, :rlScalef, [:float, :float, :float], :void
22
+
23
+ # Multiply the current matrix by another matrix
24
+ attach_function :rl_mult_matrixf, :rlMultMatrixf, [:pointer], :void
25
+
26
+ # TODO
27
+ attach_function :rl_frustum, :rlFrustum, [:double, :double, :double, :double, :double, :double], :void
28
+
29
+ # TODO
30
+ attach_function :rl_ortho, :rlOrtho, [:double, :double, :double, :double, :double, :double], :void
31
+
32
+ # Set the viewport area
33
+ attach_function :rl_viewport, :rlViewport, [:int, :int, :int, :int], :void
34
+
35
+ # Initialize drawing mode (how to organize vertex)
36
+ attach_function :rl_begin, :rlBegin, [:int], :void
37
+
38
+ # Finish vertex providing
39
+ attach_function :rl_end, :rlEnd, [], :void
40
+
41
+ # Define one vertex (position) - 2 int
42
+ attach_function :rl_vertex2i, :rlVertex2i, [:int, :int], :void
43
+
44
+ # Define one vertex (position) - 2 float
45
+ attach_function :rl_vertex2f, :rlVertex2f, [:float, :float], :void
46
+
47
+ # Define one vertex (position) - 3 float
48
+ attach_function :rl_vertex3f, :rlVertex3f, [:float, :float, :float], :void
49
+
50
+ # Define one vertex (texture coordinate) - 2 float
51
+ attach_function :rl_tex_coord2f, :rlTexCoord2f, [:float, :float], :void
52
+
53
+ # Define one vertex (normal) - 3 float
54
+ attach_function :rl_normal3f, :rlNormal3f, [:float, :float, :float], :void
55
+
56
+ # Define one vertex (color) - 4 byte
57
+ attach_function :rl_color4ub, :rlColor4ub, [:uchar, :uchar, :uchar, :uchar], :void
58
+
59
+ # Define one vertex (color) - 3 float
60
+ attach_function :rl_color3f, :rlColor3f, [:float, :float, :float], :void
61
+
62
+ # Define one vertex (color) - 4 float
63
+ attach_function :rl_color4f, :rlColor4f, [:float, :float, :float, :float], :void
64
+
65
+ # Enable vertex array (VAO, if supported)
66
+ attach_function :rl_enable_vertex_array, :rlEnableVertexArray, [:uint], :bool
67
+
68
+ # Disable vertex array (VAO, if supported)
69
+ attach_function :rl_disable_vertex_array, :rlDisableVertexArray, [], :void
70
+
71
+ # Enable vertex buffer (VBO)
72
+ attach_function :rl_enable_vertex_buffer, :rlEnableVertexBuffer, [:uint], :void
73
+
74
+ # Disable vertex buffer (VBO)
75
+ attach_function :rl_disable_vertex_buffer, :rlDisableVertexBuffer, [], :void
76
+
77
+ # Enable vertex buffer element (VBO element)
78
+ attach_function :rl_enable_vertex_buffer_element, :rlEnableVertexBufferElement, [:uint], :void
79
+
80
+ # Disable vertex buffer element (VBO element)
81
+ attach_function :rl_disable_vertex_buffer_element, :rlDisableVertexBufferElement, [], :void
82
+
83
+ # Enable vertex attribute index
84
+ attach_function :rl_enable_vertex_attribute, :rlEnableVertexAttribute, [:uint], :void
85
+
86
+ # Disable vertex attribute index
87
+ attach_function :rl_disable_vertex_attribute, :rlDisableVertexAttribute, [:uint], :void
88
+
89
+ # Enable attribute state pointer
90
+ # attach_function :rl_enable_state_pointer, :rlEnableStatePointer, [:int, :pointer], :void
91
+
92
+ # Disable attribute state pointer
93
+ # attach_function :rl_disable_state_pointer, :rlDisableStatePointer, [:int], :void
94
+
95
+ # Select and active a texture slot
96
+ attach_function :rl_active_texture_slot, :rlActiveTextureSlot, [:int], :void
97
+
98
+ # Enable texture
99
+ attach_function :rl_enable_texture, :rlEnableTexture, [:uint], :void
100
+
101
+ # Disable texture
102
+ attach_function :rl_disable_texture, :rlDisableTexture, [], :void
103
+
104
+ # Enable texture cubemap
105
+ attach_function :rl_enable_texture_cubemap, :rlEnableTextureCubemap, [:uint], :void
106
+
107
+ # Disable texture cubemap
108
+ attach_function :rl_disable_texture_cubemap, :rlDisableTextureCubemap, [], :void
109
+
110
+ # Set texture parameters (filter, wrap)
111
+ attach_function :rl_texture_parameters, :rlTextureParameters, [:uint, :int, :int], :void
112
+
113
+ # Set cubemap parameters (filter, wrap)
114
+ attach_function :rl_cubemap_parameters, :rlCubemapParameters, [:uint, :int, :int], :void
115
+
116
+ # Enable shader program
117
+ attach_function :rl_enable_shader, :rlEnableShader, [:uint], :void
118
+
119
+ # Disable shader program
120
+ attach_function :rl_disable_shader, :rlDisableShader, [], :void
121
+
122
+ # Enable render texture (fbo)
123
+ attach_function :rl_enable_framebuffer, :rlEnableFramebuffer, [:uint], :void
124
+
125
+ # Disable render texture (fbo), return to default framebuffer
126
+ attach_function :rl_disable_framebuffer, :rlDisableFramebuffer, [], :void
127
+
128
+ # Activate multiple draw color buffers
129
+ attach_function :rl_active_draw_buffers, :rlActiveDrawBuffers, [:int], :void
130
+
131
+ # Enable color blending
132
+ attach_function :rl_enable_color_blend, :rlEnableColorBlend, [], :void
133
+
134
+ # Disable color blending
135
+ attach_function :rl_disable_color_blend, :rlDisableColorBlend, [], :void
136
+
137
+ # Enable depth test
138
+ attach_function :rl_enable_depth_test, :rlEnableDepthTest, [], :void
139
+
140
+ # Disable depth test
141
+ attach_function :rl_disable_depth_test, :rlDisableDepthTest, [], :void
142
+
143
+ # Enable depth write
144
+ attach_function :rl_enable_depth_mask, :rlEnableDepthMask, [], :void
145
+
146
+ # Disable depth write
147
+ attach_function :rl_disable_depth_mask, :rlDisableDepthMask, [], :void
148
+
149
+ # Enable backface culling
150
+ attach_function :rl_enable_backface_culling, :rlEnableBackfaceCulling, [], :void
151
+
152
+ # Disable backface culling
153
+ attach_function :rl_disable_backface_culling, :rlDisableBackfaceCulling, [], :void
154
+
155
+ # Set face culling mode
156
+ attach_function :rl_set_cull_face, :rlSetCullFace, [:int], :void
157
+
158
+ # Enable scissor test
159
+ attach_function :rl_enable_scissor_test, :rlEnableScissorTest, [], :void
160
+
161
+ # Disable scissor test
162
+ attach_function :rl_disable_scissor_test, :rlDisableScissorTest, [], :void
163
+
164
+ # Scissor test
165
+ attach_function :rl_scissor, :rlScissor, [:int, :int, :int, :int], :void
166
+
167
+ # Enable wire mode
168
+ attach_function :rl_enable_wire_mode, :rlEnableWireMode, [], :void
169
+
170
+ # Disable wire mode
171
+ attach_function :rl_disable_wire_mode, :rlDisableWireMode, [], :void
172
+
173
+ # Set the line drawing width
174
+ attach_function :rl_set_line_width, :rlSetLineWidth, [:float], :void
175
+
176
+ # Get the line drawing width
177
+ attach_function :rl_get_line_width, :rlGetLineWidth, [], :float
178
+
179
+ # Enable line aliasing
180
+ attach_function :rl_enable_smooth_lines, :rlEnableSmoothLines, [], :void
181
+
182
+ # Disable line aliasing
183
+ attach_function :rl_disable_smooth_lines, :rlDisableSmoothLines, [], :void
184
+
185
+ # Enable stereo rendering
186
+ attach_function :rl_enable_stereo_render, :rlEnableStereoRender, [], :void
187
+
188
+ # Disable stereo rendering
189
+ attach_function :rl_disable_stereo_render, :rlDisableStereoRender, [], :void
190
+
191
+ # Check if stereo render is enabled
192
+ attach_function :rl_is_stereo_render_enabled, :rlIsStereoRenderEnabled, [], :bool
193
+
194
+ # Clear color buffer with color
195
+ attach_function :rl_clear_color, :rlClearColor, [:uchar, :uchar, :uchar, :uchar], :void
196
+
197
+ # Clear used screen buffers (color and depth)
198
+ attach_function :rl_clear_screen_buffers, :rlClearScreenBuffers, [], :void
199
+
200
+ # Check and log OpenGL error codes
201
+ attach_function :rl_check_errors, :rlCheckErrors, [], :void
202
+
203
+ # Set blending mode
204
+ attach_function :rl_set_blend_mode, :rlSetBlendMode, [:int], :void
205
+
206
+ # Set blending mode factor and equation (using OpenGL factors)
207
+ attach_function :rl_set_blend_factors, :rlSetBlendFactors, [:int, :int, :int], :void
208
+
209
+ # Set blending mode factors and equations separately (using OpenGL factors)
210
+ attach_function :rl_set_blend_factors_separate, :rlSetBlendFactorsSeparate, [:int, :int, :int, :int, :int, :int], :void
211
+
212
+ # Initialize rlgl (buffers, shaders, textures, states)
213
+ attach_function :rlgl_init, :rlglInit, [:int, :int], :void
214
+
215
+ # De-initialize rlgl (buffers, shaders, textures)
216
+ attach_function :rlgl_close, :rlglClose, [], :void
217
+
218
+ # Load OpenGL extensions (loader function required)
219
+ attach_function :rl_load_extensions, :rlLoadExtensions, [:pointer], :void
220
+
221
+ # Get current OpenGL version
222
+ attach_function :rl_get_version, :rlGetVersion, [], :int
223
+
224
+ # Set current framebuffer width
225
+ attach_function :rl_set_framebuffer_width, :rlSetFramebufferWidth, [:int], :void
226
+
227
+ # Get default framebuffer width
228
+ attach_function :rl_get_framebuffer_width, :rlGetFramebufferWidth, [], :int
229
+
230
+ # Set current framebuffer height
231
+ attach_function :rl_set_framebuffer_height, :rlSetFramebufferHeight, [:int], :void
232
+
233
+ # Get default framebuffer height
234
+ attach_function :rl_get_framebuffer_height, :rlGetFramebufferHeight, [], :int
235
+
236
+ # Get default texture id
237
+ attach_function :rl_get_texture_id_default, :rlGetTextureIdDefault, [], :uint
238
+
239
+ # Get default shader id
240
+ attach_function :rl_get_shader_id_default, :rlGetShaderIdDefault, [], :uint
241
+
242
+ # Get default shader locations
243
+ attach_function :rl_get_shader_locs_default, :rlGetShaderLocsDefault, [], :pointer
244
+
245
+ # Load a render batch system
246
+ attach_function :rl_load_render_batch, :rlLoadRenderBatch, [:int, :int], RlRenderBatch.by_value
247
+
248
+ # Unload render batch system
249
+ attach_function :rl_unload_render_batch, :rlUnloadRenderBatch, [RlRenderBatch.by_value], :void
250
+
251
+ # Draw render batch data (Update->Draw->Reset)
252
+ attach_function :rl_draw_render_batch, :rlDrawRenderBatch, [:pointer], :void
253
+
254
+ # Set the active render batch for rlgl (NULL for default internal)
255
+ attach_function :rl_set_render_batch_active, :rlSetRenderBatchActive, [:pointer], :void
256
+
257
+ # Update and draw internal render batch
258
+ attach_function :rl_draw_render_batch_active, :rlDrawRenderBatchActive, [], :void
259
+
260
+ # Check internal buffer overflow for a given number of vertex
261
+ attach_function :rl_check_render_batch_limit, :rlCheckRenderBatchLimit, [:int], :bool
262
+
263
+ # Set current texture for render batch and check buffers limits
264
+ attach_function :rl_set_texture, :rlSetTexture, [:uint], :void
265
+
266
+ # Load vertex array (vao) if supported
267
+ attach_function :rl_load_vertex_array, :rlLoadVertexArray, [], :uint
268
+
269
+ # Load a vertex buffer attribute
270
+ attach_function :rl_load_vertex_buffer, :rlLoadVertexBuffer, [:pointer, :int, :bool], :uint
271
+
272
+ # Load a new attributes element buffer
273
+ attach_function :rl_load_vertex_buffer_element, :rlLoadVertexBufferElement, [:pointer, :int, :bool], :uint
274
+
275
+ # Update GPU buffer with new data
276
+ attach_function :rl_update_vertex_buffer, :rlUpdateVertexBuffer, [:uint, :pointer, :int, :int], :void
277
+
278
+ # Update vertex buffer elements with new data
279
+ attach_function :rl_update_vertex_buffer_elements, :rlUpdateVertexBufferElements, [:uint, :pointer, :int, :int], :void
280
+
281
+ # TODO
282
+ attach_function :rl_unload_vertex_array, :rlUnloadVertexArray, [:uint], :void
283
+
284
+ # TODO
285
+ attach_function :rl_unload_vertex_buffer, :rlUnloadVertexBuffer, [:uint], :void
286
+
287
+ # TODO
288
+ attach_function :rl_set_vertex_attribute, :rlSetVertexAttribute, [:uint, :int, :int, :bool, :int, :pointer], :void
289
+
290
+ # TODO
291
+ attach_function :rl_set_vertex_attribute_divisor, :rlSetVertexAttributeDivisor, [:uint, :int], :void
292
+
293
+ # Set vertex attribute default value
294
+ attach_function :rl_set_vertex_attribute_default, :rlSetVertexAttributeDefault, [:int, :pointer, :int, :int], :void
295
+
296
+ # TODO
297
+ attach_function :rl_draw_vertex_array, :rlDrawVertexArray, [:int, :int], :void
298
+
299
+ # TODO
300
+ attach_function :rl_draw_vertex_array_elements, :rlDrawVertexArrayElements, [:int, :int, :pointer], :void
301
+
302
+ # TODO
303
+ attach_function :rl_draw_vertex_array_instanced, :rlDrawVertexArrayInstanced, [:int, :int, :int], :void
304
+
305
+ # TODO
306
+ attach_function :rl_draw_vertex_array_elements_instanced, :rlDrawVertexArrayElementsInstanced, [:int, :int, :pointer, :int], :void
307
+
308
+ # Load texture in GPU
309
+ attach_function :rl_load_texture, :rlLoadTexture, [:pointer, :int, :int, :int, :int], :uint
310
+
311
+ # Load depth texture/renderbuffer (to be attached to fbo)
312
+ attach_function :rl_load_texture_depth, :rlLoadTextureDepth, [:int, :int, :bool], :uint
313
+
314
+ # Load texture cubemap
315
+ attach_function :rl_load_texture_cubemap, :rlLoadTextureCubemap, [:pointer, :int, :int], :uint
316
+
317
+ # Update GPU texture with new data
318
+ attach_function :rl_update_texture, :rlUpdateTexture, [:uint, :int, :int, :int, :int, :int, :pointer], :void
319
+
320
+ # Get OpenGL internal formats
321
+ attach_function :rl_get_gl_texture_formats, :rlGetGlTextureFormats, [:int, :pointer, :pointer, :pointer], :void
322
+
323
+ # Get name string for pixel format
324
+ attach_function :rl_get_pixel_format_name, :rlGetPixelFormatName, [:uint], :pointer
325
+
326
+ # Unload texture from GPU memory
327
+ attach_function :rl_unload_texture, :rlUnloadTexture, [:uint], :void
328
+
329
+ # Generate mipmap data for selected texture
330
+ attach_function :rl_gen_texture_mipmaps, :rlGenTextureMipmaps, [:uint, :int, :int, :int, :pointer], :void
331
+
332
+ # Read texture pixel data
333
+ attach_function :rl_read_texture_pixels, :rlReadTexturePixels, [:uint, :int, :int, :int], :pointer
334
+
335
+ # Read screen pixel data (color buffer)
336
+ attach_function :rl_read_screen_pixels, :rlReadScreenPixels, [:int, :int], :pointer
337
+
338
+ # Load an empty framebuffer
339
+ attach_function :rl_load_framebuffer, :rlLoadFramebuffer, [:int, :int], :uint
340
+
341
+ # Attach texture/renderbuffer to a framebuffer
342
+ attach_function :rl_framebuffer_attach, :rlFramebufferAttach, [:uint, :uint, :int, :int, :int], :void
343
+
344
+ # Verify framebuffer is complete
345
+ attach_function :rl_framebuffer_complete, :rlFramebufferComplete, [:uint], :bool
346
+
347
+ # Delete framebuffer from GPU
348
+ attach_function :rl_unload_framebuffer, :rlUnloadFramebuffer, [:uint], :void
349
+
350
+ # Load shader from code strings
351
+ attach_function :rl_load_shader_code, :rlLoadShaderCode, [:pointer, :pointer], :uint
352
+
353
+ # Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER)
354
+ attach_function :rl_compile_shader, :rlCompileShader, [:pointer, :int], :uint
355
+
356
+ # Load custom shader program
357
+ attach_function :rl_load_shader_program, :rlLoadShaderProgram, [:uint, :uint], :uint
358
+
359
+ # Unload shader program
360
+ attach_function :rl_unload_shader_program, :rlUnloadShaderProgram, [:uint], :void
361
+
362
+ # Get shader location uniform
363
+ attach_function :rl_get_location_uniform, :rlGetLocationUniform, [:uint, :pointer], :int
364
+
365
+ # Get shader location attribute
366
+ attach_function :rl_get_location_attrib, :rlGetLocationAttrib, [:uint, :pointer], :int
367
+
368
+ # Set shader value uniform
369
+ attach_function :rl_set_uniform, :rlSetUniform, [:int, :pointer, :int, :int], :void
370
+
371
+ # Set shader value matrix
372
+ attach_function :rl_set_uniform_matrix, :rlSetUniformMatrix, [:int, Matrix.by_value], :void
373
+
374
+ # Set shader value sampler
375
+ attach_function :rl_set_uniform_sampler, :rlSetUniformSampler, [:int, :uint], :void
376
+
377
+ # Set shader currently active (id and locations)
378
+ attach_function :rl_set_shader, :rlSetShader, [:uint, :pointer], :void
379
+
380
+ # Load compute shader program
381
+ attach_function :rl_load_compute_shader_program, :rlLoadComputeShaderProgram, [:uint], :uint
382
+
383
+ # Dispatch compute shader (equivalent to *draw* for graphics pipeline)
384
+ attach_function :rl_compute_shader_dispatch, :rlComputeShaderDispatch, [:uint, :uint, :uint], :void
385
+
386
+ # Load shader storage buffer object (SSBO)
387
+ attach_function :rl_load_shader_buffer, :rlLoadShaderBuffer, [:uint, :pointer, :int], :uint
388
+
389
+ # Unload shader storage buffer object (SSBO)
390
+ attach_function :rl_unload_shader_buffer, :rlUnloadShaderBuffer, [:uint], :void
391
+
392
+ # Update SSBO buffer data
393
+ attach_function :rl_update_shader_buffer, :rlUpdateShaderBuffer, [:uint, :pointer, :uint, :uint], :void
394
+
395
+ # Bind SSBO buffer
396
+ attach_function :rl_bind_shader_buffer, :rlBindShaderBuffer, [:uint, :uint], :void
397
+
398
+ # Read SSBO buffer data (GPU->CPU)
399
+ attach_function :rl_read_shader_buffer, :rlReadShaderBuffer, [:uint, :pointer, :uint, :uint], :void
400
+
401
+ # Copy SSBO data between buffers
402
+ attach_function :rl_copy_shader_buffer, :rlCopyShaderBuffer, [:uint, :uint, :uint, :uint, :uint], :void
403
+
404
+ # Get SSBO buffer size
405
+ attach_function :rl_get_shader_buffer_size, :rlGetShaderBufferSize, [:uint], :uint
406
+
407
+ # Bind image texture
408
+ attach_function :rl_bind_image_texture, :rlBindImageTexture, [:uint, :uint, :int, :bool], :void
409
+
410
+ # Get internal modelview matrix
411
+ attach_function :rl_get_matrix_modelview, :rlGetMatrixModelview, [], Matrix.by_value
412
+
413
+ # Get internal projection matrix
414
+ attach_function :rl_get_matrix_projection, :rlGetMatrixProjection, [], Matrix.by_value
415
+
416
+ # Get internal accumulated transform matrix
417
+ attach_function :rl_get_matrix_transform, :rlGetMatrixTransform, [], Matrix.by_value
418
+
419
+ # Get internal projection matrix for stereo render (selected eye)
420
+ attach_function :rl_get_matrix_projection_stereo, :rlGetMatrixProjectionStereo, [:int], Matrix.by_value
421
+
422
+ # Get internal view offset matrix for stereo render (selected eye)
423
+ attach_function :rl_get_matrix_view_offset_stereo, :rlGetMatrixViewOffsetStereo, [:int], Matrix.by_value
424
+
425
+ # Set a custom projection matrix (replaces internal projection matrix)
426
+ attach_function :rl_set_matrix_projection, :rlSetMatrixProjection, [Matrix.by_value], :void
427
+
428
+ # Set a custom modelview matrix (replaces internal modelview matrix)
429
+ attach_function :rl_set_matrix_modelview, :rlSetMatrixModelview, [Matrix.by_value], :void
430
+
431
+ # Set eyes projection matrices for stereo rendering
432
+ attach_function :rl_set_matrix_projection_stereo, :rlSetMatrixProjectionStereo, [Matrix.by_value, Matrix.by_value], :void
433
+
434
+ # Set eyes view offsets matrices for stereo rendering
435
+ attach_function :rl_set_matrix_view_offset_stereo, :rlSetMatrixViewOffsetStereo, [Matrix.by_value, Matrix.by_value], :void
436
+
437
+ # Load and draw a cube
438
+ attach_function :rl_load_draw_cube, :rlLoadDrawCube, [], :void
439
+
440
+ # Load and draw a quad
441
+ attach_function :rl_load_draw_quad, :rlLoadDrawQuad, [], :void
442
+
443
+ # TODO
444
+ attach_function :rl_get_matrix_projection_stereo, :rlGetMatrixProjectionStereo, [:int], Matrix.by_value
445
+
446
+ # TODO
447
+ attach_function :rl_get_matrix_view_offset_stereo, :rlGetMatrixViewOffsetStereo, [:int], Matrix.by_value
448
+ end
@@ -0,0 +1,60 @@
1
+ module Raylib
2
+ # of those state-change happens (this is done in core module)
3
+ class RlDrawCall < FFI::Struct
4
+ layout(
5
+ :mode, :int, # Drawing mode: LINES, TRIANGLES, QUADS,
6
+ :vertexCount, :int, # Number of vertex of the draw,
7
+ :vertexAlignment, :int, # Number of vertex required for index alignment (LINES, TRIANGLES),
8
+ :textureId, :uint, # Texture id to be used on the draw -> Use to create new draw call if changes
9
+ )
10
+
11
+ def self.create(mode, vertex_count, vertex_alignment, texture_id)
12
+ new.tap do |instance|
13
+ instance[:mode] = mode
14
+ instance[:vertexCount] = vertex_count
15
+ instance[:vertexAlignment] = vertex_alignment
16
+ instance[:textureId] = texture_id
17
+ end
18
+ end
19
+
20
+ def to_s
21
+ "Raylib::RlDrawCall##{object_id} mode=#{mode} vertex_count=#{vertex_count} vertex_alignment=#{vertex_alignment} texture_id=#{texture_id}"
22
+ end
23
+
24
+ # Drawing mode: LINES, TRIANGLES, QUADS
25
+ # @return [Integer] mode
26
+ def mode = self[:mode]
27
+
28
+ # Sets Drawing mode: LINES, TRIANGLES, QUADS
29
+ def mode=(new_mode)
30
+ self[:mode] = new_mode
31
+ end
32
+
33
+ # Number of vertex of the draw
34
+ # @return [Integer] vertexCount
35
+ def vertex_count = self[:vertexCount]
36
+
37
+ # Sets Number of vertex of the draw
38
+ def vertex_count=(new_vertex_count)
39
+ self[:vertexCount] = new_vertex_count
40
+ end
41
+
42
+ # Number of vertex required for index alignment (LINES, TRIANGLES)
43
+ # @return [Integer] vertexAlignment
44
+ def vertex_alignment = self[:vertexAlignment]
45
+
46
+ # Sets Number of vertex required for index alignment (LINES, TRIANGLES)
47
+ def vertex_alignment=(new_vertex_alignment)
48
+ self[:vertexAlignment] = new_vertex_alignment
49
+ end
50
+
51
+ # Texture id to be used on the draw -> Use to create new draw call if changes
52
+ # @return [Integer] textureId
53
+ def texture_id = self[:textureId]
54
+
55
+ # Sets Texture id to be used on the draw -> Use to create new draw call if changes
56
+ def texture_id=(new_texture_id)
57
+ self[:textureId] = new_texture_id
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,82 @@
1
+ module Raylib
2
+ # rlRenderBatch type
3
+ class RlRenderBatch < FFI::Struct
4
+ layout(
5
+ :bufferCount, :int, # Number of vertex buffers (multi-buffering support),
6
+ :currentBuffer, :int, # Current buffer tracking in case of multi-buffering,
7
+ :vertexBuffer, :pointer, # Dynamic buffer(s) for vertex data,
8
+ :draws, :pointer, # Draw calls array, depends on textureId,
9
+ :drawCounter, :int, # Draw calls counter,
10
+ :currentDepth, :float, # Current depth value for next draw
11
+ )
12
+
13
+ def self.create(buffer_count, current_buffer, vertex_buffer, draws, draw_counter, current_depth)
14
+ new.tap do |instance|
15
+ instance[:bufferCount] = buffer_count
16
+ instance[:currentBuffer] = current_buffer
17
+ instance[:vertexBuffer] = vertex_buffer
18
+ instance[:draws] = draws
19
+ instance[:drawCounter] = draw_counter
20
+ instance[:currentDepth] = current_depth
21
+ end
22
+ end
23
+
24
+ def to_s
25
+ "Raylib::RlRenderBatch##{object_id} buffer_count=#{buffer_count} current_buffer=#{current_buffer} vertex_buffer=#{vertex_buffer} draws=#{draws} draw_counter=#{draw_counter} current_depth=#{current_depth}"
26
+ end
27
+
28
+ # Number of vertex buffers (multi-buffering support)
29
+ # @return [Integer] bufferCount
30
+ def buffer_count = self[:bufferCount]
31
+
32
+ # Sets Number of vertex buffers (multi-buffering support)
33
+ def buffer_count=(new_buffer_count)
34
+ self[:bufferCount] = new_buffer_count
35
+ end
36
+
37
+ # Current buffer tracking in case of multi-buffering
38
+ # @return [Integer] currentBuffer
39
+ def current_buffer = self[:currentBuffer]
40
+
41
+ # Sets Current buffer tracking in case of multi-buffering
42
+ def current_buffer=(new_current_buffer)
43
+ self[:currentBuffer] = new_current_buffer
44
+ end
45
+
46
+ # Dynamic buffer(s) for vertex data
47
+ # @return [rlVertexBuffer *] vertexBuffer
48
+ def vertex_buffer = self[:vertexBuffer]
49
+
50
+ # Sets Dynamic buffer(s) for vertex data
51
+ def vertex_buffer=(new_vertex_buffer)
52
+ self[:vertexBuffer] = new_vertex_buffer
53
+ end
54
+
55
+ # Draw calls array, depends on textureId
56
+ # @return [rlDrawCall *] draws
57
+ def draws = self[:draws]
58
+
59
+ # Sets Draw calls array, depends on textureId
60
+ def draws=(new_draws)
61
+ self[:draws] = new_draws
62
+ end
63
+
64
+ # Draw calls counter
65
+ # @return [Integer] drawCounter
66
+ def draw_counter = self[:drawCounter]
67
+
68
+ # Sets Draw calls counter
69
+ def draw_counter=(new_draw_counter)
70
+ self[:drawCounter] = new_draw_counter
71
+ end
72
+
73
+ # Current depth value for next draw
74
+ # @return [Float] currentDepth
75
+ def current_depth = self[:currentDepth]
76
+
77
+ # Sets Current depth value for next draw
78
+ def current_depth=(new_current_depth)
79
+ self[:currentDepth] = new_current_depth
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,93 @@
1
+ module Raylib
2
+ # Dynamic vertex buffers (position + texcoords + colors + indices arrays)
3
+ class RlVertexBuffer < FFI::Struct
4
+ layout(
5
+ :elementCount, :int, # Number of elements in the buffer (QUADS),
6
+ :vertices, :pointer, # Vertex position (XYZ - 3 components per vertex) (shader-location = 0),
7
+ :texcoords, :pointer, # Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1),
8
+ :colors, :pointer, # Vertex colors (RGBA - 4 components per vertex) (shader-location = 3),
9
+ :indices, :pointer, # Vertex indices (in case vertex data comes indexed) (6 indices per quad),
10
+ :vaoId, :uint, # OpenGL Vertex Array Object id,
11
+ :vboId, [:uint, 4], # OpenGL Vertex Buffer Objects id (4 types of vertex data)
12
+ )
13
+
14
+ def self.create(element_count, vertices, texcoords, colors, indices, vao_id, vbo_id)
15
+ new.tap do |instance|
16
+ instance[:elementCount] = element_count
17
+ instance[:vertices] = vertices
18
+ instance[:texcoords] = texcoords
19
+ instance[:colors] = colors
20
+ instance[:indices] = indices
21
+ instance[:vaoId] = vao_id
22
+ instance[:vboId] = vbo_id
23
+ end
24
+ end
25
+
26
+ def to_s
27
+ "Raylib::RlVertexBuffer##{object_id} element_count=#{element_count} vertices=#{vertices} texcoords=#{texcoords} colors=#{colors} indices=#{indices} vao_id=#{vao_id} vbo_id=#{vbo_id}"
28
+ end
29
+
30
+ # Number of elements in the buffer (QUADS)
31
+ # @return [Integer] elementCount
32
+ def element_count = self[:elementCount]
33
+
34
+ # Sets Number of elements in the buffer (QUADS)
35
+ def element_count=(new_element_count)
36
+ self[:elementCount] = new_element_count
37
+ end
38
+
39
+ # Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
40
+ # @return [float *] vertices
41
+ def vertices = self[:vertices]
42
+
43
+ # Sets Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
44
+ def vertices=(new_vertices)
45
+ self[:vertices] = new_vertices
46
+ end
47
+
48
+ # Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
49
+ # @return [float *] texcoords
50
+ def texcoords = self[:texcoords]
51
+
52
+ # Sets Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
53
+ def texcoords=(new_texcoords)
54
+ self[:texcoords] = new_texcoords
55
+ end
56
+
57
+ # Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
58
+ # @return [unsigned char *] colors
59
+ def colors = self[:colors]
60
+
61
+ # Sets Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
62
+ def colors=(new_colors)
63
+ self[:colors] = new_colors
64
+ end
65
+
66
+ # Vertex indices (in case vertex data comes indexed) (6 indices per quad)
67
+ # @return [unsigned int *] indices
68
+ def indices = self[:indices]
69
+
70
+ # Sets Vertex indices (in case vertex data comes indexed) (6 indices per quad)
71
+ def indices=(new_indices)
72
+ self[:indices] = new_indices
73
+ end
74
+
75
+ # OpenGL Vertex Array Object id
76
+ # @return [Integer] vaoId
77
+ def vao_id = self[:vaoId]
78
+
79
+ # Sets OpenGL Vertex Array Object id
80
+ def vao_id=(new_vao_id)
81
+ self[:vaoId] = new_vao_id
82
+ end
83
+
84
+ # OpenGL Vertex Buffer Objects id (4 types of vertex data)
85
+ # @return [unsigned int[4]] vboId
86
+ def vbo_id = self[:vboId]
87
+
88
+ # Sets OpenGL Vertex Buffer Objects id (4 types of vertex data)
89
+ def vbo_id=(new_vbo_id)
90
+ self[:vboId] = new_vbo_id
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,3 @@
1
+ require 'raylib/rlgl/structs/rl_draw_call'
2
+ require 'raylib/rlgl/structs/rl_render_batch'
3
+ require 'raylib/rlgl/structs/rl_vertex_buffer'
@@ -0,0 +1,4 @@
1
+ require 'raylib/rlgl/enums'
2
+ require 'raylib/rlgl/structs'
3
+ require 'raylib/rlgl/callbacks'
4
+ require 'raylib/rlgl/functions'