It's been 7 months since latest raylib release. As usual, many parts of the library have been reviewed and improved along those months. Many issues have been closed, staying under 10 open issues at the moment of this writting and also many PRs from contributors have been received, reviewed and merged into raylib library. Some new functions have been added and some others have been removed to improve library coherence and avoid moving too high level, giving the users the tools to implement advance functionality themselfs over raylib. Again, this is a big release with a considerable amount of changes and improvements. Here it is a small summary highlighting this new rayib 4.5.
Some numbers for this release:
- +100 closed issues (for a TOTAL of +1340!)
- +350 commits since previous RELEASE (for a TOTAL of +6350!)
- +25 functions ADDED to raylib API (for a TOTAL of 516!)
- +40 functions REVIEWED/REDESIGNED
- +40 new contributors (for a TOTAL of 405!)
Highlights for raylib 4.5
:
-
NEW
Improved ANGLE support on Desktop platforms: Support for OpenGL ES 2.0 on Desktop platforms (Windows, Linux, macOS) has been reviewed by @wtnbgo GitHub user. Now raylib can be compiled on desktop for OpenGL ES 2.0 and linked againstANGLE
. This small addition open the door to building raylib for all ANGLE supported backends: Direct3D 11, Vulkan and Metal. Please note that this new feature is still experimental and requires further testing! -
NEW
Camera module: A brand new implementation from scratch forrcamera
module, contributed by @Crydsch GitHub user! New camera system is simpler, more flexible, more granular and more extendable. Specific camera math transformations (movement/rotation) have been moved to individual functions, exposing them to users if required. Global state has been removed from the module and standalone usage has been greatly improved; nowrcamera.h
single-file header-only library can be used externally, independently of raylib. A newUpdateCameraPro()
function has been added to address input-dependency ofUpdateCamera()
, now advance users have full control over camera inputs and movement/rotation speeds! -
NEW
Support for M3D models and M3D/GLTF animations: 3d models animations support has been a limited aspect of raylib for long time, some versions ago IQM animations were supported but raylib 4.5 also adds support for the brand new M3D file format, including animations and the long expected support for GLTF animations! The new M3D file format is simple, portable, feature complete, extensible and open source. It also provides a complete set of tools to export/visualize M3D models from/to Blender! Now raylib supports up to 3 model file-formats with animations:IQM
,GLTF
andM3D
. -
NEW
Support QOA audio format (import/export): Just a couple of months ago the new QOA file format was published, a very simple, portable and open source quite-ok-audio file format. raylib already supports it, added toraudio
module and including audio loading from file, loading from memory, streaming from file, streaming from memory and exporting to QOA audio format. Because simplicity really matters to raylib! -
NEW
Module for compressed textures loading:rl_gputex
, a portable single-file header-only small library to load compressed texture file-formats (DDS, PKM, KTX, PVR, ASTC). Provided functionality is not new to raylib but it was part of the raylibrtextures
module, now it has been moved into a separate self-contained library, improving portability. Note that this module is only intended to load compressed data from files, ready to be uploaded to GPU, no compression/decompression functionality is provided. This change is a first step towards a better modularization of raylib library. -
Reviewed
rlgl
module for automatic limits checking: Again,rlgl
has been reviewed to simplify usage. Now users do not need to worry about reaching the internal render-batch limits when they send their triangles to draw 2d/3d,rlgl
manages it automatically! This change allows a great simplification for other modules likershapes
,rtextures
andrmodels
that do not need to worry about bufffer overflows and can just define as many vertex as desired! -
Reviewed
rshapes
module to minimize the rlgl dependency: Nowrshapes
2d shapes drawing functions only depend on 6 low-level functions:rlBegin()
,rlEnd()
,rlVertex3f()
,rlTexCoord2f()
,rlNormal3f()
,rlSetTexture()
. With only those pseudo-OpenGl 1.1 minimal functionality, everything can be drawn! This improvement convertsrshapes
module in a self-contained, portable shapes-drawing library that can be used independently of raylib, as far as entry points for those 6 functions are provided by the user. It even allows to be used for software rendering, with the proper backend! -
Added data structures validation functions: Multiple functions have been added by @RobLoach GitHub user to ease the validation of raylib data structures:
IsImageReady()
,IsTextureReady()
,IsSoundReady()
... Now users have a simple mechanism to make sure data has been correctly loaded, instead of checking internal structure values by themselfs.
As usual, those are only some highlights but there is much more! New image generators, new color transformation functionality, improved blending support for color/alpha, etc... Make sure to check raylib CHANGELOG for a detailed list of changes! Please, note that all breaking changes have been flagged with a WARNING
in the CHANGELOG, specially useful for binding creators!
raylib keeps improving one more version with a special focus on maintainability and sustainability. Always working towards making the library more simple and easy-to-use.
Let's keep enjoying games/tools/graphics programming! :)
New Contributors
- @trumoose made their first contribution in #2640
- @daipom made their first contribution in #2643
- @disketteman made their first contribution in #2682
- @acejacek made their first contribution in #2685
- @skylar779 made their first contribution in #2687
- @murilluhenrique made their first contribution in #2696
- @AQuantumPotato made their first contribution in #2701
- @deniska made their first contribution in #2702
- @bXi made their first contribution in #2719
- @realtradam made their first contribution in #2737
- @pure01fx made their first contribution in #2741
- @JupiterRider made their first contribution in #2745
- @SzieberthAdam made their first contribution in #2746
- @hatkidchan made their first contribution in #2750
- @Anut-py made their first contribution in #2753
- @Its-Kenta made their first contribution in #2757
- @IanBand made their first contribution in #2761
- @InKryption made their first contribution in #2763
- @IsaacTCB made their first contribution in #2783
- @RomanAkberov made their first contribution in #2786
- @RGDTAB made their first contribution in #2787
- @SpexGuy made their first contribution in #2793
- @shelvick made their first contribution in #2796
- @Pere001 made their first contribution in #2800
- @jtainer made their first contribution in #2797
- @lxmcf made their first contribution in #2804
- @simendsjo made their first contribution in #2826
- @AlxHnr made their first contribution in #2829
- @turborium made their first contribution in #2838
- @Wytekol made their first contribution in #2846
- @BugraAlptekinSari made their first contribution in #2836
- @charles-l made their first contribution in #2844
- @wtnbgo made their first contribution in #2840
- @ImazighenGhost made their first contribution in #2857
- @masoudd made their first contribution in #2870
- @KOLANICH made their first contribution in #2877
- @PencilAmazing made their first contribution in #2882
- @the-argus made their first contribution in #2905
- @haved made their first contribution in #2909
- @star-tek-mb made their first contribution in #2910
- @stickM4N made their first contribution in #2914
- @fubark made their first contribution in #2939
- @Skaytacium made their first contribution in #2951
- @ashn-dot-dev made their first contribution in #2958
- @Brian-ED made their first contribution in #2962
Full Changelog: 4.2.0...4.5.0