Skip to content

Instantly share code, notes, and snippets.

@DenisBelmondo
Last active September 6, 2025 23:04
Show Gist options
  • Save DenisBelmondo/da8caca05a97cc9dc80f190802e363be to your computer and use it in GitHub Desktop.
Save DenisBelmondo/da8caca05a97cc9dc80f190802e363be to your computer and use it in GitHub Desktop.
#lang racket/base
(require ffi/unsafe)
(define raylib (ffi-lib "libraylib"))
(define-cstruct _Color {
[r _ubyte]
[g _ubyte]
[b _ubyte]
[a _ubyte]
})
(define init-window (get-ffi-obj "InitWindow" raylib [_fun _int _int _string -> _void]))
(define close-window (get-ffi-obj "CloseWindow" raylib [_fun -> _void]))
(define window-should-close? (get-ffi-obj "WindowShouldClose" raylib [_fun -> _bool]))
(define begin-drawing (get-ffi-obj "BeginDrawing" raylib [_fun -> _void]))
(define end-drawing (get-ffi-obj "EndDrawing" raylib [_fun -> _void]))
(define clear-background (get-ffi-obj "ClearBackground" raylib [_fun _Color -> _void]))
(init-window 640 480 "Hello from Racket")
{
letrec {
[loop (lambda ()
{when (not (window-should-close?))
(begin-drawing)
(clear-background (make-Color 255 0 0 255))
(end-drawing)
(loop)
}
)]
}
(loop)
}
(close-window)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment