raylib

  1. raylib
    1. Description
    2. Requirements
    3. Documentation
      1. Color interface
      2. Vector interface
      3. Rectangle interface
      4. Texture interface
      5. Camera2D interface
      6. Camera3D interface
      7. Constants
      8. General interface
        1. Window-related functions
        2. Drawing-related functions
        3. Timing-related functions
        4. Input-related functions: keyboard
        5. Input-related functions: mouse
        6. Misc. functions
        7. File system functions
        8. Texture loading functions
        9. Basic shapes drawing functions
        10. Texture drawing functions
        11. Text drawing functions
      9. Quality of life
    4. Example
    5. Source repository
    6. Authors
    7. License

Description

Bindings to the raylib game library version 5.5. These are not complete yet, but all of the functions I commonly use are ported over. It's a very thin wrapper around the raylib C library that hopefully has minimal performance drawbacks.

Types such as Color, Vector2, Vector3, and Rectangle are represented as SRFI-4 vectors to keep the memory managed by CHICKEN.

See raylib.h for more info on each function.

Requirements

Documentation

Color interface

[procedure] (make-color R G B A)

Represented as u8vector.

Vector interface

[procedure] (make-vec2 X Y)
[procedure] (vec2-x V)
[procedure] (vec2-y V)
[procedure] (make-vec3 X Y Z)
[procedure] (vec3-x V)
[procedure] (vec3-y V)
[procedure] (vec3-z V)

Represented as f32vector.

Rectangle interface

[procedure] (make-rect X Y W H)
[procedure] (rect-x RECT)
[procedure] (rect-y RECT)
[procedure] (rect-w RECT)
[procedure] (rect-h RECT)

Represented as f32vector.

Texture interface

[procedure] (make-texture)
[procedure] (free-texture TEXTURE)

Allocates C struct in unmanaged memory (C_malloc). Remember to free.

[procedure] (texture-id TEXTURE)
[procedure] (texture-width TEXTURE)
[procedure] (texture-height TEXTURE)
[procedure] (texture-mipmaps TEXTURE)
[procedure] (texture-format TEXTURE)

Camera2D interface

[procedure] (make-camera2d)
[procedure] (free-camera2d CAMERA)

Allocates C struct in unmanaged memory (C_malloc). Remember to free.

[procedure] (camera2d-offset CAMERA)
[procedure] (camera2d-target CAMERA)

Return f32vector (Vector2).

[procedure] (camera2d-rotation CAMERA)
[procedure] (camera2d-zoom CAMERA)

Return flonum.

[procedure] (camera2d-offset-set! CAMERA VEC2)
[procedure] (camera2d-target-set! CAMERA VEC2)
[procedure] (camera2d-rotation-set! CAMERA ROTATION)
[procedure] (camera2d-zoom-set! CAMERA ZOOM)

Set the specified slots.

Camera3D interface

[procedure] (make-camera3d)
[procedure] (free-camera3d CAMERA)

Allocates C struct in unmanaged memory (C_malloc). Remember to free.

[procedure] (camera3d-position CAMERA)
[procedure] (camera3d-target CAMERA)
[procedure] (camera3d-up CAMERA)

Return f32vector (Vector3).

[procedure] (camera3d-fovy CAMERA)

Return flonum.

[procedure] (camera3d-projection CAMERA)

Return fixnum.

[procedure] (camera3d-position-set! CAMERA VEC3)
[procedure] (camera3d-target-set! CAMERA VEC3)
[procedure] (camera3d-up-set! CAMERA VEC3)
[procedure] (camera3d-fovy-set! CAMERA FOVY)
[procedure] (camera3d-projection-set! CAMERA PROJ)

Constants

The following are defined from raylib.h:

General interface

[procedure] (init-window WIDTH HEIGHT TITLE)
[procedure] (close-window)
[procedure] (get-screen-width)
[procedure] (get-screen-height)
[procedure] (window-should-close?)
[procedure] (begin-drawing)
[procedure] (end-drawing)
[procedure] (begin-mode-2d CAMERA)
[procedure] (end-mode-2d)
[procedure] (begin-mode-3d CAMERA)
[procedure] (end-mode-3d)
[procedure] (clear-background COLOR)
[procedure] (set-target-fps FPS)
[procedure] (get-frame-time)
[procedure] (get-time)
[procedure] (get-fps)
[procedure] (key-pressed? KEY)
[procedure] (key-pressed-repeat? KEY)
[procedure] (key-down? KEY)
[procedure] (key-released? KEY)
[procedure] (key-up? KEY)
[procedure] (get-key-pressed)
[procedure] (get-char-pressed)
[procedure] (mouse-button-pressed? MOUSEBUTTON)
[procedure] (mouse-button-down? MOUSEBUTTON)
[procedure] (mouse-button-released? MOUSEBUTTON)
[procedure] (mouse-button-up? MOUSEBUTTON)
[procedure] (get-mouse-x)
[procedure] (get-mouse-y)
[procedure] (get-mouse-position)
Misc. functions
[procedure] (trace-log LOGLEVEL TEXT)
File system functions
[procedure] (change-directory DIR)
Texture loading functions
[procedure] (load-texture FILENAME)
Basic shapes drawing functions
[procedure] (draw-pixel POSX POSY COLOR)
[procedure] (draw-pixel-v POSITION COLOR)
[procedure] (draw-line STARTPOSX STARTPOSY ENDPOSX ENDPOSY COLOR)
[procedure] (draw-line-v STARTPOS ENDPOS COLOR)
[procedure] (draw-line-ex STARTPOS ENDPOS THICK COLOR)
[procedure] (draw-circle CENTERX CENTERY RADIUS COLOR)
[procedure] (draw-circle-v CENTER RADIUS COLOR)
[procedure] (draw-circle-lines CENTERX CENTERY RADIUS COLOR)
[procedure] (draw-circle-lines-v CENTER RADIUS COLOR)
[procedure] (draw-rectangle POSX POSY WIDTH HEIGHT COLOR)
[procedure] (draw-rectangle-v POSITION SIZE COLOR)
[procedure] (draw-rectangle-rec RECT COLOR)
[procedure] (draw-rectangle-pro RECT ORIGIN ROTATION COLOR)
[procedure] (draw-rectangle-lines POSX POSY WIDTH HEIGHT COLOR)
[procedure] (draw-rectangle-lines-ex RECT LINETHICK COLOR)
[procedure] (draw-triangle V1 V2 V3 COLOR)
[procedure] (draw-triangle-lines V1 V2 V3 COLOR)
Texture drawing functions
[procedure] (draw-texture TEXTURE POSX POSY TINT)
[procedure] (draw-texture-v TEXTURE POSITION TINT)
[procedure] (draw-texture-ex TEXTURE POSITION ROTATION SCALE TINT)
[procedure] (draw-texture-rec TEXTURE SOURCERECT POSITION TINT)
[procedure] (draw-texture-pro TEXTURE SOURCERECT DESTRECT ORIGIN ROTATION TINT)
Text drawing functions
[procedure] (draw-text TEXT POSX POSY FONTSIZE)
[procedure] (measure-text TEXT FONTSIZE)

Quality of life

[procedure] (with-window WIDTH HEIGHT TITLE THUNK)
[procedure] (with-drawing THUNK)
[procedure] (with-mode-2d CAMERA THUNK)
[procedure] (with-mode-3d CAMERA THUNK)

Example

(import raylib)

(init-window 800 450 "raylib [core] example - basic window")

(let loop ()
  (with-drawing
   (lambda ()
     (clear-background RAYWHITE)
     (draw-text "Congrats! You created your first window!"
                190
                200
                20
                LIGHTGRAY)))
  (unless (window-should-close?)
    (loop)))

(close-window)

Source repository

https://github.com/meowstr/chicken-raylib

Feel free to open issues and PR's!

Authors

Meowster

License

MIT