Skip to content

A dynamic and static D binding to the raylib library

License

Notifications You must be signed in to change notification settings

sarvex/bindbc-raylib3

 
 

bindbc-raylib3

This project provides both static and dynamic bindings to the raylib a simple and easy-to-use library to enjoy videogames programming.

See wiki and API.

Compile raylib source code

See raylib wiki and bindbc wiki

Usage

By default, bindbc-raylib3 is configured to compile as a dynamic binding that is not -betterC compatible. The dynamic binding has no link-time dependency on the raylib library, so the raylib shared library must be manually loaded at run time.

To use raylib, add bindbc-raylib3 as a dependency to your project's package config file. For example, the following is configured to compile raylib as a dynamic binding:

dub.json

dependencies {
    "bindbc-raylib3": "~>0.1.0",
}

dub.sdl

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

For static binding:

dub.sdl

dependency "bindbc-raylib3" version="~>0.1.0"
subConfiguration "bindbc-raylib3" "static"

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
   }
}

For static binding see wiki

Raylib version

Following are the bindbc-raylib3 versions, the supported versions of raylib and the corresponding RaylibSupport members.

Raylib version RaylibSupport Member bindbc-raylib3 version
4.2.0 RaylibSupport.raylib420 2.0.0
4.0.0 RaylibSupport.raylib400 1.0.0
3.7.0 RaylibSupport.raylib370 0.3.0

For bind-raylib3 version see wiki.

Versioning

bindbc-raylib3 is being semantically versioned. Roughly described, major version changes will always represent backwards incompatible changes, minor version changes will always represent new features and will be backwards compatible, and patch ('tiny') version changes will always be bug fixes.

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

About

A dynamic and static D binding to the raylib library

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 86.1%
  • D 12.2%
  • Makefile 1.7%