Direct3D Retained Mode: Difference between revisions
(Created page with "'''Direct3D Retained Mode''' (also known as '''D3DRM''') was a seldom-used graphics API that was part of early versions of {{Wikipedia|Direct3D}}. Its counterpart is Direct3D...") |
(No difference)
|
Revision as of 04:26, 21 October 2019
Direct3D Retained Mode (also known as D3DRM) was a seldom-used graphics API that was part of early versions of Direct3D. Its counterpart is Direct3D Immediate Mode (Retained Mode largely functioning as a layer on top of Immediate Mode as well).
History
Retained Mode functions almost as a minimal game engine on top of Immediate Mode, providing a "scene" that developers can add to and modify rather than making direct graphics API calls manually. Retained Mode handles the actual rendering/drawing of the scene, including any possible optimizations it can make. The modern equivalent is fully fledged game engines such as Unity and Unreal Engine that similarly provide a 3D scene for developers to place objects into. However Retained Mode had only a fraction of the overall functionality of a modern game engine, and at the time the vast majority of game developers chose to forego Retained Mode and write their own graphics engines based on Immediate Mode instead.
The last update Direct3D Retained Mode received was with DirectX 3.0 in 1996 and has been largely deprecated since then. It remained as a legacy component in DirectX until Windows Vista when it was quietly removed (necessitating restoring it manually for LEGO Island to play)
Other graphics libraries of the era, such as OpenGL also feature a "retained mode", however OpenGL's is deprecated too.
LEGO Island
LEGO Island uses Retained Mode extensively for all of its 3D graphics, and is one of only two major commercially successful games known to do so (the other being LEGO Rock Raiders).
Retained Mode's age and obscurity initially made LEGO Island's code harder to analyze since (unlike its peers `DDRAW.DLL`, `D3DIM.DLL`, etc.) it largely predates online documentation and the D3DRM.DLL provided on disc was too old to have PDB debug symbols available. However, it was discovered that a more recent version of D3DRM.DLL was released in 2001 with Windows XP and also has PDB symbols available, mitigating this entirely. A digitized book from the era was also discovered documenting most of Retained Mode's API.
In many ways, Retained Mode is likely the culprit in many of LEGO Island's compatibility issues with modern systems. Since Microsoft has dropped any and all support for Retained Mode, it's possible the game's codebase may have aged better had it been written for Immediate Mode instead.
"D3DRM.DLL was not found" error message
LEGO Island requires Direct3D Retained Mode to play. For instructions on restoring it on recent versions of Windows, see Compatibility Issues#D3DRM.DLL was not found
Downloads
- Download newest version: File:D3DRM.ZIP
- Debug symbols (PDB)
- File:DirectX 3D Graphics Programming Bible.pdf, a book from the D3DRM era that documents most of its API