# raylib 4.5.0 — raylib v4.5 - Product: raylib (https://whatsnew.fyi/product/raylib) - Vendor: raysan5 - Date: 2023-03-18 - Version: 4.5.0 - Original notes: https://github.com/raysan5/raylib/releases/tag/4.5.0 - Permalink: https://whatsnew.fyi/product/raylib/releases/4.5.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Improved ANGLE support on Desktop platforms for OpenGL ES 2.0 with support for Direct3D 11, Vulkan and Metal backends - **added** — New Camera module with simplified and more flexible camera system, removed global state, and added UpdateCameraPro() function for advanced input control - **added** — Support for M3D models and M3D/GLTF animations, adding GLTF animation support alongside existing IQM format - **added** — Support for QOA audio format including import, export, and streaming functionality - **added** — New rl_gputex module as portable single-file header-only library for loading compressed texture formats (DDS, PKM, KTX, PVR, ASTC) - **changed** — Reviewed rlgl module to automatically manage render-batch limits without user intervention - **changed** — Reviewed rshapes module to depend only on 6 low-level rlgl functions, making it a self-contained portable library - **added** — Added data structure validation functions including IsImageReady(), IsTextureReady(), IsSoundReady() - **added** — Moved compressed texture loading functionality from rtextures module to separate rl_gputex module for improved portability ![raylib_release_promo_450](https://user-images.githubusercontent.com/5766837/226331474-61ebe2b2-dbe4-46e7-8ab5-7ffb4a6d5fae.png) 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 against [`ANGLE`](https://github.com/google/angle). 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 for `rcamera` 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; now `rcamera.h` single-file header-only library can be used externally, independently of raylib. A new `UpdateCameraPro()` function has been added to address input-dependency of `UpdateCamera()`, 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](https://bztsrc.gitlab.io/model3d/), 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` and `M3D`. - **`NEW` Support QOA audio format (import/export)**: Just a couple of months ago the new [QOA file format](https://qoaformat.org/) was published, a very simple, portable and open source quite-ok-audio file format. raylib already supports it, added to `raudio` 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`](https://github.com/raysan5/raylib/blob/master/src/external/rl_gputex.h), 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 raylib `rtextures` module, now it has been moved into a separate self-contained library, **improving portability**. Note that this module _[Truncated at 4000 characters — full notes: https://github.com/raysan5/raylib/releases/tag/4.5.0]_