raylib
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
- foreigners
- raylib c library (should be visible via -lraylib)
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:
- Colors (e.g. LIGHTGRAY)
- KEY_* (e.g. KEY_ENTER)
- MOUSE_BUTTON_* (e.g. MOUSE_BUTTON_LEFT)
- LOG_* (e.g. LOG_INFO)
General interface
Window-related functions
[procedure] (init-window WIDTH HEIGHT TITLE)[procedure] (close-window)
[procedure] (get-screen-width)
[procedure] (get-screen-height)
[procedure] (window-should-close?)
Drawing-related functions
[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)
Timing-related functions
[procedure] (set-target-fps FPS)[procedure] (get-frame-time)
[procedure] (get-time)
[procedure] (get-fps)
Input-related functions: keyboard
[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)
Input-related functions: mouse
[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