Raylib Logo
   HOME

TheInfoList



OR:

raylib (officially named all lowercase) is a
cross-platform In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software r ...
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
software development
library A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
. The library was made to create graphical applications and games. The library was inspired by the Borland BGI graphics library and by the XNA framework, and it’s designed to be suited for prototyping, tooling, graphical applications, embedded systems, and education. The source code is written in plain C (
C99 C99 (previously known as C9X) is an informal name for ISO/IEC 9899:1999, a past version of the C programming language standard. It extends the previous version ( C90) with new features for the language and the standard library, and helps impl ...
), which is distributed under a zlib/libpng
OSI OSI may refer to: Places * Osijek Airport (IATA code: OSI), an airport in Croatia * Ősi, a village in Veszprém county, Hungary * Oši, an archaeological site in Semigallia, Latvia * Osi, a village in Ido-Osi, Ekiti State, Nigeria * Osi, Ekiti ...
certified open-source license. It supports compilation to several target platforms, including Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi and HTML5. raylib has been ported to more than 50
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
s in the form of bindings, but many of these ports are not stable.


History

raylib development was started in August 2013 by Ramon Santamaria to support a game development course, focused on students with no previous coding experience and artistic profile; the library acted as a direct replacement of WinBGI. During the course, raylib was further developed based on the feedback of the students and by June 2014, the library was starting to be showcased in several game development events in Barcelona. raylib 1.0 was released in November 2013 and it featured around 80 functions for window and inputs management, basic 2D and 3D shape drawing, texture loading and drawing, font loading, text drawing, audio system management and audio file loading and playback. The first raylib version had eight subsequent minor releases (from raylib 1.1 to raylib 1.8), over the course of five years, which each introduced some new features. Some of the most notable improvements were
Android Android may refer to: Science and technology * Android (robot), a humanoid robot or synthetic organism designed to imitate a human * Android (operating system), Google's mobile operating system ** Bugdroid, a Google mascot sometimes referred to ...
,
WebAssembly WebAssembly (sometimes abbreviated Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environment ...
and
Raspberry Pi Raspberry Pi () is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic ...
support, multiple
OpenGL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
backends, VR support and ten examples. raylib 2.0 was released in July 2018 and removed all external dependencies from the build system. It also exposed a number of configuration options in the build system, to minimize size and increase support, supporting various continuous integration systems. Along the following two years, parts of the library were reviewed updated, and the ecosystem was built out. A single minor release, raylib 2.5, was released during this period. raylib 3.0 was released in April 2020, refactoring many parts of the code to improve portability and bindings. It involved moving global variables to contexts, added support for custom memory allocators, a filesystem for loading assets and over 115 code examples. It received a minor update, raylib 3.5, in December 2020. raylib 4.0 was released in November 2021, featuring a complete naming review for library consistency and coherency: function names, parameters, descriptions, comments and log output messages were reviewed. It added an internal Events Automation System and exposed game-loop control for the user. It also features some of its internal libraries to be used as standalone modules: rlgl and raymath. Zig and Odin programming languages officially support raylib. It has been the biggest update of the library to date. raylib 4.2 was released in August 2022.


Features

raylib offers the following features: * Support for multiple platforms, including Windows, Linux, macOS,
Raspberry Pi Raspberry Pi () is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic ...
Android and HTML5 * Support for
OpenGL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
1.1, 2.1, 3.3, 4.3 and
OpenGL ES OpenGL for Embedded Systems (OpenGL ES or GLES) is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accel ...
2.0 as backend * Image, textures and fonts loading and drawing from several formats * Audio loading and playing from several formats and streaming support * Math operations for vectors, matrices, and quaternions * 2D rendering with a camera, including automatic sprites batching * 3D models rendering including custom shaders and postprocessing shaders * Support for VR simulations with configurable HMD device parameters * Support for animated as well as non-animated 3D and 2D models


Reception and adoption

raylib was primarily intended for education on video games and graphics programming. However, since many developers found it simple and easy to use, it has been adopted in various hobbyist projects. Multiple communities exist for raylib on services such as
Reddit Reddit (; stylized in all lowercase as reddit) is an American social news aggregation, content rating, and discussion website. Registered users (commonly referred to as "Redditors") submit content to the site such as links, text posts, images ...
and
Discord Discord is a VoIP and instant messaging social platform. Users have the ability to communicate with voice calls, video calls, text messaging, media and files in private chats or as part of communities called "servers".The developer documenta ...
. On the raylib website, a handful of social networks are listed, including the personal sites of Santamaria, and communities dedicated to raylib.
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous ...
lists over 120 projects on the raylib topic.


Software architecture


Modules

raylib consists of several modules that are exposed to the programmer through the
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
. * core – Handles the window creation and
OpenGL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
context initialization as well as inputs management (keyboard, mouse, gamepad and touch input) * rlgl – Handles
OpenGL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
backend, abstracting multiple versions to a common API. This module can be used standalone. * shapes – Handles basic 2D shape rendering (line, rectangle, circle...) and basic collision detection * textures – Handles image and texture loading (CPU and GPU) and management, including image manipulation functionality (crop, scale, tint, etc.) * text – Handles fonts loading as spritesheet and text rendering. Also includes some text processing functionality (join, split, replace, etc.) * models – Handles 3D model loading and rendering, including support for animated models * raudio – Handles audio device management and audio file loading and playback, including streaming support. This module can be used standalone. * raymath – Provides a set of math functions for vectors, matrices and quaternions


Bindings

raylib has bindings for more than 50 different programming languages, created by its community, including
Rust Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH ...
, Go, C#,
Lua Lua or LUA may refer to: Science and technology * Lua (programming language) * Latvia University of Agriculture * Last universal ancestor, in evolution Ethnicity and language * Lua people, of Laos * Lawa people, of Thailand sometimes referred t ...
,
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
, and
Nim Nim is a mathematical two player game. Nim or NIM may also refer to: * Nim (programming language) * Nim Chimpsky, a signing chimpanzee Acronyms * Network Installation Manager, an IBM framework * Nuclear Instrumentation Module * Negative index met ...
. A list of bindings is available in the BINDINGS.md file in the raylib GitHub repository.


Add-ons

The raylib community has contributed several add-ons to extend the features and connection of raylib with other libraries. Some of the modules are: * raygui –
Immediate mode GUI An immediate mode graphic user interface (GUI), also known as IMGUI, is a graphical user interface design pattern which uses an immediate mode graphics library to create the GUI. The other major pattern of API design in graphics libraries is th ...
module for raylib * physac – physics module intended to be used with raylib * libpartikel – particle system module for raylib * spine-raylib – Spine animations integration module for raylib * cimgui-raylib – Dear Imgui integration module for raylib


Awards

* In April 2019, Santamaria was awarded with the Google Open Source Peer Bonus award for contributing to the open-source ecosystem with raylib. * In August 2020, raylib was awarded with an Epic MegaGrant by
Epic Games Epic Games, Inc. is an American video game and software developer and publisher based in Cary, North Carolina. The company was founded by Tim Sweeney as Potomac Computer Systems in 1991, originally located in his parents' house in Potomac, M ...
to support its development. * In April 2021, Santamaria was awarded with another Google Open Source Peer Bonus award for the same reasons. * In March 2022, raylib was nominated for the BEST GAME ENGINE category on MOBILE GAMES AWARDS 2022.


See also


References


External links

* *
raylib games on Itch.io
{{Video game engines Application programming interfaces C (programming language) libraries Graphics libraries Audio libraries Cross-platform software Windows APIs Linux APIs MacOS APIs Video game development Video game development software for Linux