Posted November 04, 2021 by Ray
#coding #game engine #learn #education #programming #open source #raylib #tools #library
It's been about 6 months since last raylib release and it's been 8 years since I started with this project, what an adventure! It's time for a new release: raylib 4.0
, the biggest release ever and an inflexion point for the library. Many hours have been put in this release to make it special, many library details have been polished: syntax, naming conventions, code comments, functions descriptions, log outputs... Almost all the issues have been closed (only 3 remain open at the moment of this writing) and some amazing new features have been added. I expect this raylib 4.0
to be a long term version, stable and complete enough for any new graphic/game/tool application development.
Let's start with some numbers:
Highlights for raylib 4.0
:
raylib
API has been completely reviewed to be consistent on naming conventions for data structures and functions, comments and descriptions have been reviewed, also the syntax of many symbols for consistency; some functions and structs have been renamed (i.e. struct CharInfo
to struct GlyphInfo
). Output log messages have been also improved to show more info to the users. Several articles have been writen in this process: raylib_syntax analysis and raylib API usage analysis. In general, a big polishment of the library to make it more consistent and coherent.
SUPPORT_CUSTOM_FRAME_CONTROL
. It's intended for advance users that want to control the events polling and also the timming mechanisms of their games.
rlgl 4.0
: This module has been completely decoupled from platform layer and raylib, now rlgl
single-file header-only library only depends on the multiple OpenGL backends supported, even the dependency on raymath
has been removed. Additionally, support for OpenGL 4.3 has been added, supporting compute shaders and Shader Storage Buffer Objects (SSBO). Now rlgl
can be used as a complete standalone portable library to wrap several OpenGL version and providing a simple and easy-to-use pseudo-OpenGL immediate-mode API.
raymath 1.5
: This module has been reviewed and some new conventions have been adopted to make it more portable and self-contained:
DEG2RAD
/RAD2DEG
macros provided for convenience)
raygui 3.0
: The official raylib immediate-mode gui library (included in raylib/src/extras
) has been updated to a new version, embedding the icons collection and adding mulstiple improvements. It has been simplified and constrained for a better focus on its task: provide a simple and easy-to-use immediate-mode-gui library for small tools development.
raylib_parser
: Added new tool to parse raylib.h
and tokenize its enums, structs and functions, extracting all required info (name, params, descriptions...) into custom output formats (TXT, XML, JSON...) for further processing. This tool is specially useful to automatize bindings generation. Hopefully, this tool will make life easier to binding creators to update their bindings for raylib 4.0 or adding new ones!
Zig
lists raylib as an official example for C interoperatibility and Odin officially supports raylib as a vendor library. Both languages also have several bingings to raylib. Additionally, Zig build system supported has been added to compile raylib library and examples.
Those are some of the key features for this new release but actually there is way more! Support for VOX
(MagikaVoxel) 3d model format has been added, new raylib_game_template repo shared, new EncodeDataBase64()
and DecodeDataBase64()
functions added, improved HiDPI support, new DrawTextPro()
with support for text rotations, completely reviewed glTF
models loading, added SeekMusicStream()
for music seeking, many new examples and +20 examples reviewed... hundreds of improvements and bug fixes! Make sure to check CHANGELOG for a detailed list of changes!
Undoubtely, this is the best raylib ever. Enjoy gamedev/tools/graphics programming! :)