Llibreria raylib (videojocs) a la Raspberry Pi
Instal.lació
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/ make PLATFORM=PLATFORM_RPI 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 ifeq ($(PLATFORM),PLATFORM_RPI) RPI_CROSS_COMPILE ?= NO RPI_TOOLCHAIN ?= RPI_TOOLCHAIN_SYSROOT ?= endif
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"); SetTargetFPS(60); //-------------------------------------------------------------------------------------- // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { // Update //---------------------------------------------------------------------------------- // TODO: Update your variables here //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); EndDrawing(); //---------------------------------------------------------------------------------- } // 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 $ make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=SHARED
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:
$ make PLATFORM=PLATFORM_DESKTOP GRAPHICS=GRAPHICS_API_OPENGLES_20 RAYLIB_LIBTYPE=SHARED USE_EXTERNAL_GLFW=TRUE \ 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 $ make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=SHARED
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
Fullscreen
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