bindbc-raylib 0.7.0

Dynamic and static bindings to raylib


To use this package, run the following command in your project's root directory:

bindbc-raylib

This project provides both static (WIP) and dynamic bindings to the raylib a simple and easy-to-use library to enjoy videogames programming and raygui a simple and easy-to-use immediate-mode-gui library.

Compile raylib source code

You can only compile raylib or also include support for raygui. In the following examples we use ~/cc/raylib for raylib source code, ~/cc/raygui for raygui source code and ~/d/bindbc-raylib for bindbc-raylib source code.

Compile only raylib

  1. Clone raylib:
$ cd ~/cc
$ git clone https://github.com/raysan5/raylib.git
  1. Create a new branch bindbc This binding is based on commit 72443f8f25b1f8ded3b05da17857b7eeb1556b35 (May 2 11:56:24 2020 +0200)
$ git checkout -b bindbc 72443f8f
$ git describe --tags
3.0.0-70-g72443f8f

The tagged 3.0.0 release is older (April 1):

$ git log 3.0.0
commit 7ef114d1da2c34a70bba5442497103441647d8f3 (tag: 3.0.0)
Author: Ray <raysan5@gmail.com>
Date:   Wed Apr 1 11:07:01 2020 +0200

and is somewhat different from the version used here.Do not use

  1. Compile shared library (see raylib wiki)
$ cd raylib/src
$ make RAYLIB_LIBTYPE=SHARED
$ sudo make install RAYLIB_LIBTYPE=SHARED

Compile with raygui

Follow the previous steps an then:

  1. Clone raygui:
$ cd ~/cc
$ git clone https://github.com/raysan5/raygui.git
  1. Copy raygui/src/*.h to raylib/src
$ cd raygui
$ cp src/*.h ../raylib/src
  1. Modify raylib/src/Makefile in order to add icons support:
@@ -575,6 +575,7 @@ raygui.o : raygui.c raygui.h gui_textbox_extended.h ricons.h
        $(CC) -c $< $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) -DRAYGUI_IMPLEMENTATION
 raygui.c:
        echo '#define RAYGUI_IMPLEMENTATION' > raygui.c
+       echo '#define RAYGUI_SUPPORT_ICONS' >> raygui.c
        echo '#include "$(RAYLIB_MODULE_RAYGUI_PATH)/raygui.h"' >> raygui.c

Or use tools/Makefile_with_raygui_support:

$ cd ~/cc/raylib
$ cp ~/d/bindbc-raylib/tools/Makefile_with_raygui_support src/Makefile
  1. Compile with raygui support (RAYLIB_MODULE_RAYGUI=TRUE)
$ make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=SHARED RAYLIB_MODULE_RAYGUI=TRUE
$ sudo make install PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=SHARED RAYLIB_MODULE_RAYGUI=TRUE

make install installs libraries into /usr/local/lib. In order to install into different path use DESTDIR:

$ sudo make install RAYLIB_LIBTYPE=SHARED DESTDIR=/usr

Usage

Add bindbc-raylib to your project

Add the package as a dependency in your dub.json or dub.sdl package description:

dub.json

"dependencies": {
    "bindbc-raylib": "~>0.1.0"
}

dub.sdl

dependency "bindbc-raylib" version="~>0.1.0"

Enable raygui

To enable raygui add versions to your dub file (see examples/gui)

dub.json

"versions": [
    "RAYGUI"
],

dub.sdl

versions "RAYGUI"

Enable support for raylib versions

Not all raylib tags are annotated. To see the correct version of raylib source:

$ cd raylib
$ git describe --tag

So, raylib versions can be configured by adding appropriate versions directive in your dub file. bindbc-raylib defines a D version identifier for each raylib version.

The following table lists each identifier and the raylib versions they enable:

| raylib version | raylib commit | Version ID | | --- | --- | --- | | 2.5.0 | | Default | | 2.6.0 | 117696a8 | RAYLIB260 | | 3.0.0 | `7ef114d1` | RAYLIB300 | | 3.0.0-70-g72443f8f | 72443f8f | RAYLIB_301 |

For examples, in order to use raylib version 2.6.0:

dub.json

"versions": [ "RAYLIB_260" ],

dub.sdl

versions "RAYLIB_260"

Loading raylib

The loadRaylib function is used to load all supported raylib functions. The return value of loadRaylib can be used to determine which version of raylib actually loaded.

import bindbc.raylib;
import loader = bindbc.loader.sharedlib;

void main(string[] args) {
   RaylibSupport retVal = loadRaylib();
   // raylibSupport is an enum with current raylib version
   if (retVal != raylibSupport) {
      // error
   } else {
      // successful
   }
}

Examples

You can find original raylib examples ported to D inside examples directory.

A simple example:

import std.stdio;
import bindbc.raylib;

void main(string[] args) {
   RaylibSupport retVal = loadRaylib();
   if (retVal != raylibSupport) {
      writeln("ERROR: ", retVal);
   } else {
      writeln("VERSION: ", retVal);
      writeln("loaded : ", loadedRaylibVersion);

      enum SCREEN_WIDTH = 800;
      enum SCREEN_HEIGHT = 450;

      // Initialization
      InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - basic window");

      SetTargetFPS(60); // Set our game to run at 60 frames-per-second

      // Main game loop
      while (!WindowShouldClose()) {
         // Draw
         BeginDrawing();
         ClearBackground(GOLD);
         DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
         EndDrawing();
      }
      CloseWindow();
   }
}

Dependencies

Authors:
  • Orfeo Da ViĆ 
Dependencies:
none
Versions:
0.7.0 2020-Sep-11
0.6.0 2020-Aug-06
0.5.0 2020-Jun-26
0.4.0 2020-May-21
0.3.0 2020-May-06
Show all 8 versions
Download Stats:
  • 1 downloads today

  • 4 downloads this week

  • 11 downloads this month

  • 43 downloads total

Score:
0.9
Short URL:
bindbc-raylib.dub.pm