Llibreria raylib (videojocs) a la Raspberry Pi

De wikijoan
Salta a la navegació Salta a la cerca


He instal.lat la llibreria raylib en una Raspberry Pi 3 i he fet les primeres proves.

git clone https://github.com/raysan5/raylib.git
sudo apt install libopenal1 libopenal-dev libglfw3
#maybe libglfw3 can be skipped since we are using GLES
cd raylib/src/

sudo make install

Sense fer cap canvi en el Makefile compila bé, però després no troba una llibreria.

O sigui que faig en el Makefile el canvi que es proposa:

# Use cross-compiler for PLATFORM_RPI

compila bé el Make, però quan vull fer sudo make install busca la llibreria estàtica a /home/pi/raylib/release/libs/linux en comptes de /home/pi/raylib/release/libs/rpi, que és on realment està. Per tant, la copio allà on es pensa que està, i ja funcionarà tot:

$ cp /home/pi/raylib/release/libs/rpi/libraylib.a /home/pi/raylib/release/libs/linux
sudo make install

This installs the static library and headerfiles in /usr/local/lib and /usr/local/include.

So to test the installation I just copied out one of the examples and checked what options was needed to compile it.

$ gcc core_basic_window.c -L/opt/vc/lib/ -lraylib -lbrcmGLESv2 -lbrcmEGL -lpthread -lrt -lm -lbcm_host -lopenal

this created the file a.out which I ran with "./a.out"

PS: Some examples also need the "-std=c99" option.
PPS: Older versions of raspbian can probably remove the "brcm" letters from the library names, I think they came in Stretch. Check your "/opt/vc/lib" directory.

(ha funcionat)

Enllaç directe de descàrrega del codi:

També compila l'exemple bàsic amb C++:

$ g++ core_basic_window.cpp -L/opt/vc/lib/ -lraylib -lbrcmGLESv2 -lbrcmEGL -lpthread -lrt -lm -lbcm_host -lopenal -o core_basic_window

I també he provat i han funcionat els exemples:

  • core_input_mouse.c
  • master/examples/models/models_box_collisions.c

Exemple bàsic: core_basic_window.c

*   raylib [core] example - Basic window
*   Welcome to raylib!
*   To test examples, just press F6 and execute raylib_compile_execute script
*   Note that compiled executable is placed in the same folder as .c file
*   You can find all basic examples on C:\raylib\raylib\examples folder or
*   raylib official webpage: www.raylib.com
*   Enjoy using raylib. :)
*   This example has been created using raylib 1.0 (www.raylib.com)
*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*   Copyright (c) 2013-2016 Ramon Santamaria (@raysan5)

#include "raylib.h"

int main()
    // Initialization
    int screenWidth = 800;
    int screenHeight = 450;

    InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");

    // Main game loop
    while (!WindowShouldClose())    // Detect window close button or ESC key
        // Update
        // TODO: Update your variables here

        // Draw


            DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);


    // De-Initialization
    CloseWindow();        // Close window and OpenGL context

    return 0;

Instal.lació a Linux

$ sudo apt install build-essential git

$ sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev

You can compile three different types of raylib library:

  • The static library (default method)
  • The dynamic shared library (often used on Linux)
  • The web library

Nosaltres fem l'opció estàndar, que és la dynamic shared library.

$ git clone https://github.com/raysan5/raylib.git raylib
$ cd raylib/src/
$ make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=SHARED # To make the dynamic shared version. - Recommended
$ sudo make install RAYLIB_LIBTYPE=SHARED # Dynamic shared version

Per muntar tots els exemples que estan dins la carpeta examples/:

$ cd raylib/examples

i es compilen tots els exemples (es poden fer coses xules).

A more detailed command for the OpenGL ES GRAPHICS variant on Ubuntu 16.04 is:

    CFLAGS="-fPIC -I/usr/include/GL" LDFLAGS='-L/usr/local/lib/raysan5 -lGLESv2 -lglfw3'
To compile just one specific example, add flags as needed:

make core/core_basic_window PLATFORM=PLATFORM_DESKTOP

To force recompile one example:

make core/core_basic_window PLATFORM=PLATFORM_DESKTOP -B

I també compilo tots els jocs:

$ cd raylib/games

Per compilar un exemple concret, per exemple el tetris:

$ gcc -o tetris tetris.c -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -D_DEFAULT_SOURCE -I. -I../release/include -I../src -I../src/external -L. -L../release/libs/linux -L../src  -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -DPLATFORM_DESKTOP


src/core.c, a la línia 285:

static bool fullscreen = true;             // Fullscreen mode (useful only for PLATFORM_DESKTOP)

Hem de tornar a compilar tots els projectes, i ara per defecte, a Linux/Ubuntu, tots els exemples i games ja funcionen a fullscreen. (A la RPi, per defecte ja tots els exemples estaven a fullscreen).

creat per Joan Quintana Compte, maig 2018