Raylib

Igralska programska knjižnica. From Wikipedia, the free encyclopedia

Raylib
Remove ads

raylib je večplatformska prosto dostopna odprtokodna knjižnica za razvoj programske opreme. Zasnovana je bila za ustvarjanje grafičnih aplikacij in iger.[3][4]

Podatki na hitro Razvijalec, Začetna izdaja ...

Knjižnica je zasnovana tako, da je primerna za izdelavo prototipov, orodij, grafičnih aplikacij, vgrajene sisteme in izobraževanje. Izvorna koda je napisana v programskem jeziku C (natančneje z uporabo standarda C99), ki se razpečuje (distribuira) pod certificirano odprtokodno licenco zlib/libpng Open Source Initiative (OSI). Podpira prevajanje na več ciljnih okolij (platform), vključno z MS Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi in HTML5.

raylib je bil v obliki vezav (bindings) prenesen v več kot 70 programskih jezikov,[5] vendar mnogi od teh prenosov niso stabilni.[6]

Remove ads

Zgodovina

Razvoj knjižnice raylib je avgusta 2013 začel Ramon Santamaria za podporo tečaju razvoja iger, osredotočenemu na študente brez predhodnih izkušenj s kodiranjem in umetniškega profila. Med tečajem se je raylib nadalje razvijal na podlagi povratnih informacij študentov in do junija 2014 se je knjižnica začela predstavljati na več dogodkih razvoja iger v Barceloni.

raylib 1.0 je bil izdan novembra 2013 in je vseboval približno 80 funkcij za upravljanje oken in vhodov, osnovno risanje 2R in 3R oblik, nalaganje in risanje tekstur, nalaganje pisav, risanje besedila, upravljanje avdio sistema ter nalaganje in predvajanje avdio datotek. Prva različica raylib je imela v petih letih osem zaporednih manjših izdaj (od raylib 1.1 do raylib 1.8), od katerih je vsaka uvedla nekaj novih gradnikov. Nekatere najpomembnejše izboljšave so bile podpora za Android, WebAssembly in Raspberry Pi, več zalednih sistemov OpenGL, podpora za navidezno resničnost (VR) in deset zgledov.

Različica raylib 2.0 je bila izdana julija 2018 in je odstranila vse zunanje odvisnosti iz sistema za gradnjo. Prav tako je razkrila mnoge možnosti konfiguracije v sistemu za gradnjo, da bi zmanjšala velikost in povečala podporo, s čimer je podpirala različne sisteme za neprekinjeno integracijo. V naslednjih dveh letih so bili deli knjižnice pregledani in posodobljeni, ekosistem pa je bil zgrajen. V tem obdobju je bila izdana ena sama manjša izdaja, raylib 2.5.

raylib 3.0 je bil izdan aprila 2020 in je preoblikoval mnoge dele kode za izboljšanje prenosljivosti in vezav. Vključeval je premikanje globalnih spremenljivk v kontekste, dodano podporo za prilagojene razdeljevalnikov pomnilnika, datotečni sistem za nalaganje sredstev in več kot 115 zgledov kode. Decembra 2020 je prejel manjšo posodobitev, raylib 3.5.

raylib 4.0 je bil izdan novembra 2021 in je vključeval popoln pregled poimenovanja za doslednost in koherenco knjižnice: pregledana so bila imena funkcij, opisi parametrov, komentarji in izhodna sporočila dnevnika. Dodal je notranji sistem za avtomatizacijo dogodkov in uporabniku omogočil nadzor nad igralno zanko. Vsebuje tudi nekatere notranje knjižnice, ki se lahko uporabljajo kot samostojni moduli: rlgl in raymath.

raylib 4.2 je bil izdan avgusta 2022.[7]

raylib 4.5 je bil izdan marca 2023, 7 mesecev po zadnji izdaji. Ta posodobitev je prinesla podporo za abstrakcijsko plast grafičnega pogona ANGLE na namizna okolja, nov modul kamere, podporo za modele M3D in animacije M3D/GLTF, združljivost z obliko zvočnih datotek QOA,[8] nov modul za nalaganje stisnjenih tekstur (rl_gputex),[9] preglede v modulih rlgl[10] in rshapes,[11] validacijo podatkovnih struktur (IsImageReady(), IsTextureReady() in IsSoundReady()) za mnoge strukture raylib in mnoge druge izboljšave. To je bila največja posodobitev knjižnice doslej.

raylib 5.0 je bil izdan novembra 2023 in je izboljšal podporo za prihodnje prenose na okolja.[12]

raylib 5.5 je bil izdan novembra 2024.

Remove ads

Značilnosti

raylib ponuja naslednje gradnike:[13][14]

  • podpora za več okolij, vključno z MS Windows, Linux, macOS, Raspberry Pi, Android in HTML5
  • podpora za OpenGL 1.1, 2.1, 3.3, 4.3 in OpenGL ES 2.0, 3.0 kot grafični API
  • nalaganje in risanje slik, tekstur in pisav iz več formatov
  • nalaganje in predvajanje zvoka iz več formatov in podpora za pretakanje
  • matematične operacije za vektorje, matrike in kvaternione
  • 2R-upodabljanje s kamero, vključno s samodejnim združevanjem grafičnih likov (spriteov)
  • upodabljanje 3R-modelov, vključno s senčilniki po meri in senčilniki za naknadno obdelavo
  • podpora za navideznoresničnostne (VR) simulacije z nastavljivimi parametri naprave HMD
  • podpora za animirane in neanimirane 3R- in 2R-modele
Remove ads

Zgled

To je preprost zgled v C-ju, ki ustvari okno z besedilom, podan na spletišču GitHub o raylibu.

#include "raylib.h"

int main(void) {
   InitWindow(800, 450, "raylib [core] example - basic window");

   while (!WindowShouldClose()) {
      BeginDrawing();
      ClearBackground(RAYWHITE);
      DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
      EndDrawing();
   }

   CloseWindow();

   return 0;
}

Sprejetje in posvojitev

Januarja 2024 je bilo na GitHubu navedeno približno 900 projektov, ki so se ujemali s temo raylib. Septembra 2025 je bilo navedenih 1.962 javnih repozitorijev v zvezi s to knjižnico.[15]

Arhitektura programske opreme

Moduli

Thumb
Arhitektura raylib od različice 5.0 naprej.[16]

raylib je sestavljen iz več modulov, ki so programerju na voljo prek APIja.

  • core upravlja ustvarjanje oken in inicializacijo konteksta OpenGL ter upravljanje vhodov (tipkovnica, miška, igralni plošček in vnos na dotik)
  • rlgl upravlja zaledno okolje OpenGL, pri čemer več različic združuje v skupni API. Ta modul se lahko uporablja samostojno.
  • shapes obvladuje osnovno upodabljanje 2R oblik (črta / premica, pravokotnik, krožnica / krog ...) in osnovno zaznavanje trkov
  • textures obvladuje nalaganje in upravljanje slik in tekstur (CPU in GPU), vključno s funkcionalnostjo manipulacije slik (obrezovanje, skaliranje, niansiranje itd.)
  • text obvladuje nalaganje pisav kot spritesheet in upodabljanje besedila. Vključuje tudi nekatere funkcije za obdelavo besedila (združevanje, razdelitev, zamenjava itd.).
  • models obvladuje nalaganje in upodabljanje 3R-modelov, vključno s podporo za animirane modele
  • raudio upravlja avdio naprave ter nalaganje in predvajanje avdio datotek, vključno s podporo za pretakanje. Ta modul se lahko uporablja samostojno.
  • raymath zagotavlja nabor matematičnih funkcij za vektorje, matrike in kvaternione

Vezave

raylib ima vezave za več kot 70 različnih programskih jezikov, ki so jih ustvarile različne jezikovne skupnosti. Računalniški programski jeziki, narečja in prevajalniki, ki so posodobljeni na najnovejšo različico, vključujejo: Ada, brainfuck, BQN, C3, C#, Chez Scheme, CLIPS, COBOL, Common Lisp, Crystal, D (Dlang), Dart, Dyalog APL, elixir, Factor, Fennel, FreeBASIC, Free Pascal, Fortran, Gforth, GNU Guile, Go, Harbour, Haskell, Haxe, Jai, java, Kotlin/Native, Lean4, Lua, Nim, Node.js, Object Pascal, OCaml, PHP, Python, QuickJS, R, Racket, Raku, Ruby, Rust, SmallBASIC, Swift, V (Vlang), Vala in Zig. Na voljo je tudi ovoj za C++ za uporabnike C++, ki imajo raje manj podobno C-ju, bolj C++-idiomatsko uporabo, in ga je mogoče uvoziti tudi kot modul C++.[17] Seznam vezav je na voljo v datoteki BINDINGS.md[5] v GitHubovem repozitoriju raylib.

Zgled z uporabo raylib-cpp

Sledi enak zgled prejšnjemu zgledu, le da uporablja vezave C++ iz raylib-cpp.

import raylib;

using raylib::Texture;
using raylib::Window;
using namespace raylib::Colors;

int main(int argc, char* argv[]) {
   constexpr int SCREEN_WIDTH = 800;
   constexpr int SCREEN_HEIGHT = 450;

   Window window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - basic window");
   Texture logo("raylib_logo.png");

   window.SetTargetFPS(60);

   while (!window.ShouldClose()) {
      window.BeginDrawing();
      window.ClearBackground(RAYWHITE);
      raylib::DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);

      logo.Draw(
            SCREEN_WIDTH / 2 - logo.GetWidth() / 2,
            SCREEN_HEIGHT / 2 - logo.GetHeight() / 2
      );

      window.EndDrawing();
   }

   return 0;
}

Dodatki

Skupnost raylib je prispevala več dodatkov za razširitev gradnikov in povezave raylib z drugimi knjižnicami. Nekateri moduli so:

  • raygui modul grafičnega uporabniškega vmesnika za takojšnji način delovanja za raylib[18]
  • physac fizikalni modul, namenjen uporabi z raylib[19]
  • libpartikel modul sistema delcev za raylib[20]
  • spine-raylib modul za integracijo animacij hrbtenice za raylib[21]
  • cimgui-raylib integracijski modul grafičnouporabniške knjižnice za C++ Dear Imgui za raylib[22]
Remove ads

Nagrade

  • aprila 2019 je Santamaria prejel nagrado Google Open Source Peer Bonus za prispevek k odprtokodnemu ekosistemu z raylib.[23]
  • avgusta 2020 je raylib prejel nagrado Epic MegaGrant od Epic Games za podporo njegovega razvoja.[24]
  • aprila 2021 je Santamaria iz enakih razlogov prejel še eno nagrado Google Open Source Peer Bonus.[25]
  • marca 2022 je bil raylib nominiran za kategorijo Najboljši igralni pogon na podelitvi nagrad Mobile Games Awards 2022.[26]
Remove ads

Glej tudi

  • Borland Graphics Interface (BGI) (en)
  • Simple DirectMedia Layer (SDL) (en)
  • Simple and Fast Multimedia Library (SFML) (en)
  • MonoGame (en)
  • Allegro (en)
  • ClanLib (en)
  • SVGAlib (en)
  • Graphics Library Framework (GLFW) (en)

Sklici

Viri

Zunanje povezave

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads