raylib is a very modular library, defined by a small number of specific and self-contained modules. Every module is organized by its main functionality (avoiding hundreds of modules depending on other modules, like other C libraries).
raylib is a highly modular library. Everything is contained within a small number of well defined, specific and self-contained modules, each organized according to its primary functionality (nicely avoiding the huge tree of recursive dependencies, typical of other C libraries).
@ -11,9 +12,9 @@ raylib is a very modular library, defined by a small number of specific and self
- [`models`](https://github.com/raysan5/raylib/blob/master/src/models.c): 3D models loading and drawing.
- [`models`](https://github.com/raysan5/raylib/blob/master/src/models.c): 3D models loading and drawing.
- [`raudio`](https://github.com/raysan5/raylib/blob/master/src/raudio.c): Audio device management and sounds / music loading and playing.
- [`raudio`](https://github.com/raysan5/raylib/blob/master/src/raudio.c): Audio device management and sounds / music loading and playing.
Those 7 modules share a common header: [`raylib.h`](https://github.com/raysan5/raylib/blob/master/src/raylib.h), all user functions are defined in that header, despite the fact they are divided internally in 7 modules. That way, the user just needs to include `raylib.h` to get all raylib functionality. Other libraries use one header for every module (that way the user can choose included modules) or also headers that refer to other headers. raylib uses a simpler approach that's easier for novice (and expert) users.
Those seven modules share a common header: [`raylib.h`](https://github.com/raysan5/raylib/blob/master/src/raylib.h), all user functions are defined in that header, despite the fact they are divided internally in 7 modules. That way, the user just needs to include `raylib.h` to get all raylib functionality. Other libraries use one header for every module (that way the user can choose included modules) or also headers that refer to other headers. raylib uses a simpler approach that's easier for novice (and expert) users.
Apart from those 7 main modules, some other modules have been implemented with additional features:
Apart from those seven main modules, some other modules have been implemented with additional features:
- [`raymath`](https://github.com/raysan5/raylib/blob/master/src/raymath.h): Vector2, Vector3, Matrix and Quaternion math related functions
- [`raymath`](https://github.com/raysan5/raylib/blob/master/src/raymath.h): Vector2, Vector3, Matrix and Quaternion math related functions
- [`camera`](https://github.com/raysan5/raylib/blob/master/src/camera.h): 3D Camera system (free, 1st person, 3rd person, custom)
- [`camera`](https://github.com/raysan5/raylib/blob/master/src/camera.h): 3D Camera system (free, 1st person, 3rd person, custom)