Case study
librw: a re-implementation of the RenderWare Graphics engine
Re-implements a large part of the RenderWare Graphics middleware API as a portable C++ library that reads and writes its DFF model and TXD texture files for PS2, D3D8, D3D9 and Xbox and is meant to convert them between platforms. Direct3D 9 and OpenGL backends render the scenes, while PS2 rendering works only as a test. README names rendering GTA as its use; BSP world files are not supported.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: As a library, librw needs no particular original files: applications hand it RenderWare DFF models and TXD texture dictionaries, such as those of the games they render. The repository ships no game data, but its demo tools include four small DFF sample models whose provenance it does not state.
- Prerequisites: Builds use premake5 (a premake5.exe is committed) or CMake 3.8+, selecting a NULL, GL3 or D3D9 platform and, for GL3 (OpenGL 2.1+ or ES 2.0+), GLFW, SDL2 or SDL3 for windowing. premake targets Windows x86/amd64, Linux x86/amd64/ARM and PS2, and the CMake files add PS2 and Nintendo Switch toolchains; a skeleton application framework with bundled Dear ImGui accompanies the demo tools.
- Scope: The reviewed master snapshot dates from 2026-08-26; CMake reports version 0.0.1 and the repository has no tagged releases. README calls librw a re-implementation of RenderWare graphics, “or a good part of it”: not all pre-instanced PS2 DFFs load and BSP is unsupported, and TODO lists morphing, several pipelines and PS2 rendering as open. ARCHITECTURE.MD says some design decisions follow the original RW and others are the author’s own.
- Testing evidence: The GitHub Actions workflow builds and packages 14 configurations: Windows D3D9, GL3 and null, macOS and Ubuntu GL3 and null, PS2 in a ps2dev container and Switch in a devkitPro container. It runs no tests, and the repository has no test suite or comparison with original RenderWare output.
- License: LICENSE applies MIT to librw; the bundled Dear ImGui and ImGuizmo code carries its own licence files, and RenderWare itself and any game assets keep their owners’ rights.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · aap/librw · Revision 18532c2
- ARCHITECTURE.MD GitHub · aap/librw · Revision 18532c2
- TODO GitHub · aap/librw · Revision 18532c2
- CMakeLists.txt GitHub · aap/librw · Revision 18532c2
- README.cmake GitHub · aap/librw · Revision 18532c2
- premake5.lua GitHub · aap/librw · Revision 18532c2
- .github/workflows/build.yml GitHub · aap/librw · Revision 18532c2
- src GitHub · aap/librw · Revision 18532c2
- tools GitHub · aap/librw · Revision 18532c2
- skeleton/imgui GitHub · aap/librw · Revision 18532c2
- LICENSE GitHub · aap/librw · Revision 18532c2
More in Games
- MechRewired: rebuilding MechWarrior 2 from original game data · Case study
- Nanolathe: a documented Total Annihilation engine reimplementation · Case study
- nfs-mw: a Rust reconstruction of Need for Speed: Most Wanted · Case study
- NuVelocity Engine: reimplementing Reflexive's Velocity Engine · Case study
- OpenAWE: an open reimplementation of Remedy’s Alan Wake engine · Case study
- OpenBattlefield2: an unfinished Refractor 2 engine reimplementation · Case study