package raylib

  1. Overview
  2. Docs
OCaml bindings for raylib

Install

Dune Dependency

Authors

Maintainers

Sources

raylib-0.3.2.tbz
sha256=96912086fb0a10de9cc6618b631665885f3d4e4add75fea1b8a284bbcf79b395
sha512=77cab807ce4a3841191fb9188acff3e53b6aedf98b89d656b5ea975189009577ed03225521748fdadf11245a615803dc4747a37e0d394a252f5fc3c1b2409915

Description

OCaml bindings for raylib

Published: 01 Jun 2021

README

README.md

raylib-ocaml

OCaml bindings for raylib (v3.5.0), a simple and easy-to-use library to enjoy videogames programming.

The bindings are pretty faithful to the original C code, the biggest difference is the conversion of all function names from CamelCase to snake_case. Wherever possible, integer arguments are changed to their own variant types, eg. int key to Key.t.

Bindings exist for (nearly) all functions and types, but only a subset are tested thus far (see examples folder). Rough edges are to be expected.

Example

let setup () =
  Raylib.init_window 800 450 "raylib [core] example - basic window";
  Raylib.set_target_fps 60

let rec loop () =
  match Raylib.window_should_close () with
  | true -> Raylib.close_window ()
  | false ->
      let open Raylib in
      begin_drawing ();
      clear_background Color.raywhite;
      draw_text "Congrats! You created your first window!" 190 200 20
        Color.lightgray;
      end_drawing ();
      loop ()

let () = setup () |> loop

More examples can be found in the examples folder.

Although the original raylib is written in C, most functions take their arguments by value, which maps nicely to a functional language like OCaml. In the few cases where pointers are needed for arrays (mainly the 3D part of raylib), raylib-ocaml tries to use the CArray type of ctypes, which it also re-exports in the main Raylib module.

Installation

During the build of raylib-ocaml, the raylib C library is built from source, therefore its dependencies must be installed (details here). For some distros, depexts exist (feel free to contribute depexts for missing distros) to automatically install these dependencies:

opam depext raylib

raylib-ocaml can be installed via opam:

opam install raylib

Examples

To build the examples, make sure the raylib C submodule is available with git submodule update --init --recursive. Then simply

dune build

inside this repo. The binaries can then be found in _build/default/examples.

Raygui

In addition to raylib, there are bindings to raygui, an immediate mode gui library which complements raylib. As with the raylib bindings, the bindings stick close to the C source. An exception to this are the *_style functions, which take a polymorphic variant. An example can be found in examples/gui.

TODO

  • Split the library into components (core, sound, 3D, VR etc) for a smaller memory footprint

Dependencies (9)

  1. conf-libxrandr os = "linux" | os-family = "bsd"
  2. conf-libxinerama os = "linux" | os-family = "bsd"
  3. conf-libxi os = "linux" | os-family = "bsd"
  4. conf-libxcursor os = "linux" | os-family = "bsd"
  5. conf-mesa os = "linux" | os-family = "bsd"
  6. ppx_cstubs >= "0.6"
  7. ctypes >= "0.14"
  8. dune-configurator
  9. dune >= "2.8"

Dev Dependencies (1)

  1. odoc with-doc

Used by (1)

  1. raygui < "0.6.0"

Conflicts

None

OCaml

Innovation. Community. Security.