Wrappers: Difference between revisions
No edit summary |
Useful when there is a long gap between releases, like between 2.7.1 and 3.0 |
||
| (42 intermediate revisions by 7 users not shown) | |||
| Line 1: | Line 1: | ||
A '''wrapper''' is a reimplementation of a [[wikipedia:Library (computing)|library]], where the goal is to substitute the original API with a better-supported interface. It works as a drop-in replacement for the original library, since a lot of software usually bundled it as-is without any fine-tuning. Wrappers are most common for proprietary interfaces that are either abandoned or otherwise platform-specific. | A '''wrapper''' is a reimplementation of a [[wikipedia:Library (computing)|library]], where the goal is to substitute the original API with a better-supported interface. It works as a drop-in replacement for the original library, since a lot of software usually bundled it as-is without any fine-tuning. Wrappers are most common for proprietary interfaces that are either abandoned or otherwise platform-specific. | ||
See [[ | See [[High and low-level emulation]] page for more information about terms like "[[Hypervisors|hypervisors]]", "[[Simulators|simulators]]", "[[Compatibility_layer|compatibility layers]]", "[[Wrappers|wrappers]]", "[[FPGA]]" and "[[:Category:Emulators|software emulators]]". | ||
;*Lists of Glide games [https://www.vogons.org/viewtopic.php?t=534 here], [https://www.vogons.org/viewtopic.php?t=886 here], and [https://www.zeus-software.com/downloads/nglide/compatibility here] | |||
;*[https://www.vogons.org/viewtopic.php?t=534 | ;*List of other proprietary API games [https://www.vogons.org/viewtopic.php?p=279817 here] | ||
;*PCGamingWiki's [https://www.pcgamingwiki.com/wiki/Category:Graphics_API lists] of APIs of games<ref group=Note>As of April 29, 2026, only the Direct3D 12 (except Early Access), 10, 9Ex and 8 lists (and potentially Vulkan, Mantle and Metal) are practically reliable (barring a handful of titles). Note that there are more games using the said APIs which have not yet had the API information added on their pages. The other lists still require validation; it's a WIP. People are encouraged to contribute by directly checking the games with the appropriate tools. The details are on the PCGW editing guide.</ref> | |||
;* | ;*See [[Sound and audio|audio API and middleware]] supported games list; | ||
; | |||
;*See [[ | |||
::*[https://www.dosdays.co.uk/topics/3daudio_games.php Surround sound] ([https://docs.google.com/document/d/1SyOw7D0H2ecGxzPsCFEFKwupU8LuazUrlkI-gVTpyhc/edit?tab=t.0#heading=h.nu0xc1c2nmo4 #2], [https://www.pcgamingwiki.com/wiki/List_of_games_that_support_surround_sound #3]) | ::*[https://www.dosdays.co.uk/topics/3daudio_games.php Surround sound] ([https://docs.google.com/document/d/1SyOw7D0H2ecGxzPsCFEFKwupU8LuazUrlkI-gVTpyhc/edit?tab=t.0#heading=h.nu0xc1c2nmo4 #2], [https://www.pcgamingwiki.com/wiki/List_of_games_that_support_surround_sound #3]) | ||
::*[[wikipedia:Environmental_Audio_Extensions#Games_with_EAX_Support|EAX]] ([https://www.pcgamingwiki.com/wiki/List_of_games_that_support_EAX #2]). | ::*[[wikipedia:Environmental_Audio_Extensions#Games_with_EAX_Support|EAX]] ([https://www.pcgamingwiki.com/wiki/List_of_games_that_support_EAX #2]). | ||
| Line 38: | Line 36: | ||
! scope="col"|[[Recommended Emulators|Recommended]] | ! scope="col"|[[Recommended Emulators|Recommended]] | ||
|- | |- | ||
| rowspan= | | rowspan=17 |Graphics | ||
|[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2] | |[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{ | |[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVoodoo2Ver}}] | ||
|Glide 2.11-3.10<br>DirectDraw 1-7<br>Direct3D 2-7 | |Glide 2.11-3.10<br>DirectDraw 1-7<br>Direct3D 2-7 | ||
|Direct3D 11, 12 | |Direct3D 11, 12 | ||
| Line 48: | Line 46: | ||
|[[Wine|WineD3D]] | |[[Wine|WineD3D]] | ||
|align=left|{{Icon|Windows|Linux|macOS}} | |align=left|{{Icon|Windows|Linux|macOS}} | ||
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br/>[https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>(Windows)</small><ref group=N name=XPcompatibility>DxWnd 2.05.70, WineD3D 1.7.52 or 1.9.7-staging(partially) versions are the latest compatible versions with Windows XP (if [https://github.com/Skulltrail192/One-Core-API-Binaries OneCoreAPI] is '''not''' installed to OS), for getting these old "WineD3D for Windows" builds use [https://www.vogonsdrivers.com/wrappers/files/DirectX/OpenGL/WineD3D/2000+/ this link]. Also you can use [https://github.com/JHRobotics/wine9x?tab=readme-ov-file#wined3d-port-for-windows-9x JHRobotics port for using WineD3D on Windows 9x or Windows XP].</ref> | |[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br/>[https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>(Windows)</small><ref group=N name=XPcompatibility>DxWnd 2.05.70, WineD3D 1.7.52 or 1.9.7-staging(partially) versions are the latest compatible versions with Windows XP (if [https://github.com/Skulltrail192/One-Core-API-Binaries OneCoreAPI] is '''not''' installed to OS), for getting these old "WineD3D for Windows" builds use [https://www.vogonsdrivers.com/wrappers/files/DirectX/OpenGL/WineD3D/2000+/ this link]. Also you can use [https://github.com/JHRobotics/wine9x?tab=readme-ov-file#wined3d-port-for-windows-9x JHRobotics port for using WineD3D on Windows 9x (Wine9x) or Windows XP].</ref> | ||
|DirectDraw 1-7<br>Direct3D 2-7 | |DirectDraw 1-7<br>Direct3D 2-7 | ||
|Vulkan<br>OpenGL | |Vulkan<br>OpenGL | ||
|[https://appdb.winehq.org/objectManager.php?sClass=application&sTitle=Browse%20Applications&sOrderBy=appName&bAscending=true ?] ||{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{✓}} | |[https://appdb.winehq.org/objectManager.php?sClass=application&sTitle=Browse%20Applications&sOrderBy=appName&bAscending=true ?] ||{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{✓}} | ||
|- | |||
|[https://github.com/WinterSnowfall/d7vk D7VK] | |||
|align=left|{{Icon|Windows|Linux}} | |||
|[https://github.com/WinterSnowfall/d7vk/releases/latest 1.7] | |||
|Direct3D 2-6 (experimental)<br/>Direct3D 7 | |||
|Vulkan | |||
| ||{{Green}} {{License|zlib}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | |||
|- | |- | ||
|[https://sourceforge.net/projects/dxwnd DxWnd] | |[https://sourceforge.net/projects/dxwnd DxWnd] | ||
| Line 59: | Line 64: | ||
|<small>no API conversion</small> | |<small>no API conversion</small> | ||
| ||{{Green}} {{License|GPLv2}} ({{License|Copyleft}}) ||{{✓}} ||{{✓}} | | ||{{Green}} {{License|GPLv2}} ({{License|Copyleft}}) ||{{✓}} ||{{✓}} | ||
|- | |||
|[https://github.com/ata4/glrage glrage] | |||
|align=left|{{Icon|Windows}} | |||
|[https://github.com/ata4/glrage/releases/latest r10] | |||
|ATI3DCIF<br>DirectDraw 2 | |||
|OpenGL 3.3 | |||
| ||{{Green}} {{License|LGPLv3}} ({{License|Copyleft}}) ||{{✗}} ||{{✓}} | |||
|- | |||
|[https://apps.microsoft.com/detail/9NRCQJ8VLGTK?hl=en-us&gl=US RReady (Rendition Verite wrapper)] | |||
|align=left|{{Icon|Windows}} | |||
|[https://apps.microsoft.com/detail/9NRCQJ8VLGTK?hl=en-us&gl=US RReady Rendition Verité] | |||
|RRedline<br>Speedy3D | |||
|OpenGL | |||
| ||{{Red}} {{License|Proprietary}} ||{{✓}} ||{{✓}} | |||
|- | |||
|[https://www.vogons.org/viewtopic.php?t=104456 S3d wrappers] | |||
|align=left|{{Icon|Windows}} | |||
|[https://www.vogons.org/viewtopic.php?t=104456 S3d wrappers] | |||
|S3D<br>MSI95 | |||
|Software | |||
| ||{{Red}} {{License|Proprietary}} ||{{✓}} ||{{✓}} | |||
|- | |- | ||
|[http://www.zeus-software.com/downloads/nglide nGlide] | |[http://www.zeus-software.com/downloads/nglide nGlide] | ||
| Line 69: | Line 95: | ||
|[https://github.com/elishacloud/dxwrapper DxWrapper] | |[https://github.com/elishacloud/dxwrapper DxWrapper] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
|[https://github.com/elishacloud/dxwrapper/releases | |[https://github.com/elishacloud/dxwrapper/releases {{DxWrapperVer}}] | ||
|DirectDraw 1-7<br>Direct3D 2-7 | |DirectDraw 1-7<br>Direct3D 2-7 | ||
|Direct3D 9<ref group=N name=dxwrapper>Through '''dd7to9''' | |Direct3D 9<ref group=N name=dxwrapper>Through '''dd7to9'''</ref><br>Direct3D 7 (for Direct3D 2-6)<br>DirectDraw 7 (for DirectDraw 1-6) | ||
|[https://github.com/elishacloud/dxwrapper/wiki/DirectDraw-to-Direct3D9-Conversion#table-key ?] ||{{Green}} {{License|zlib}} ({{License|Permissive}}) ||{{✓}} ||{{~}} | |[https://github.com/elishacloud/dxwrapper/wiki/DirectDraw-to-Direct3D9-Conversion#table-key ?] ||{{Green}} {{License|zlib}} ({{License|Permissive}}) ||{{✓}} ||{{~}} | ||
|- | |- | ||
| Line 94: | Line 120: | ||
|OpenGL | |OpenGL | ||
| ||{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{~}} | | ||{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{~}} | ||
|- | |||
|[https://mesa3d.org/ Mesa3D] | |||
|align=left|{{Icon|Windows|Linux}} | |||
|[https://downloads.fdossena.com/Projects/Mesa3D/Builds/index.frag {{MesaVer}}] | |||
|OpenGL 1.x | |||
|Software (CPU) | |||
| ||{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | |||
|- | |- | ||
|[http://www.glidos.net/ Glidos] | |[http://www.glidos.net/ Glidos] | ||
| Line 122: | Line 155: | ||
|Direct3D 9 | |Direct3D 9 | ||
| ||{{Green}} {{License|LGPL}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}} | | ||{{Green}} {{License|LGPL}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}} | ||
|- | |- | ||
| rowspan=2 |Input | | rowspan=2 |Input | ||
| Line 154: | Line 166: | ||
|[https://github.com/elishacloud/dxwrapper DxWrapper] | |[https://github.com/elishacloud/dxwrapper DxWrapper] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
|[https://github.com/elishacloud/dxwrapper/releases | |[https://github.com/elishacloud/dxwrapper/releases {{DxWrapperVer}}] | ||
|DirectInput 1-7 | |DirectInput 1-7 | ||
|DirectInput 8 | |DirectInput 8 | ||
| Line 162: | Line 174: | ||
|[https://github.com/kcat/dsoal DSOAL] | |[https://github.com/kcat/dsoal DSOAL] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
|[https://github.com/kcat/dsoal/actions git] | |[https://github.com/kcat/dsoal/actions git]<br/>[https://github.com/pachuco/dsoal-XP dsoal-XP] | ||
|DirectSound | |DirectSound | ||
|OpenAL | |OpenAL | ||
| Line 172: | Line 184: | ||
===Comparisons=== | ===Comparisons=== | ||
;dgVoodoo2 | ;dgVoodoo2 | ||
:Supports Glide 2.11, 2.45, 3.10, 3.1 Napalm, all versions of DirectDraw, and Direct3D up to version 7. Outputs Direct3D 11 and Direct3D 12 with different device types as wrapping output, such as hardware or software rendering. | :Supports Glide 2.11, 2.45, 3.10, 3.1 Napalm, all versions of DirectDraw, and Direct3D up to version 7. Outputs Direct3D 11 and Direct3D 12 with different device types as wrapping output, such as hardware or software rendering. | ||
| Line 180: | Line 189: | ||
;[[Wine|WineD3D]] | ;[[Wine|WineD3D]] | ||
:Wine's internal wrapper. Wraps DirectDraw and Direct3D up to 7 into Vulkan and OpenGL. It works pretty well for running older Direct3D games, though it does not come with a Glide implementation of its own. A custom build is available for Windows [https://fdossena.com/?p=wined3d/index.frag here]. | :Wine's internal wrapper. Wraps DirectDraw and Direct3D up to 7 into Vulkan and OpenGL. It works pretty well for running older Direct3D games, though it does not come with a Glide implementation of its own. A custom build is available for Windows [https://fdossena.com/?p=wined3d/index.frag here]. | ||
;nGlide | |||
:A great Glide wrapper, supporting all three public versions (2.11, 2.60 and 3.10) but it's closed-source. It originally only used Direct3D 9 until Vulkan output was added in 2.0, allowing it to work under Linux using [[Wine]] 2.10.0 and newer.<ref name="nglidevulkan">http://www.zeus-software.com/forum/viewtopic.php?f=2&t=2044</ref> nGlide also supports high resolution modes. See the [http://www.zeus-software.com/downloads/nglide/compatibility compatibility list]. | |||
;DXGL | ;DXGL | ||
| Line 191: | Line 203: | ||
Modern Windows games will likely need one of these wrappers to work on other platforms. Usually these are not separate downloads, and will come packaged into [[compatibility layers]] like [[Proton]], [[Wine]], or [https://www.codeweavers.com/crossover CrossOver]. | Modern Windows games will likely need one of these wrappers to work on other platforms. Usually these are not separate downloads, and will come packaged into [[compatibility layers]] like [[Proton]], [[Wine]], or [https://www.codeweavers.com/crossover CrossOver]. | ||
The term "wrapper" is not entirely accurate for some software listed in this table, such as OpenAL Soft. Unlike a true wrapper, which translates or redirects API calls to another system (e.g., DSOAL mapping OpenAL to DirectSound3D), OpenAL Soft is a complete, open-source software implementation of the OpenAL 3D audio API. It directly provides full functionality, including positional audio, distance attenuation, Doppler effects, and environmental audio processing, through software-based rendering. Operating independently of hardware acceleration, OpenAL Soft supports multiple platforms (e.g., Linux, Windows, macOS) and audio backends (e.g., ALSA, PulseAudio, WASAPI), making it a standalone audio engine rather than a wrapper layer. | |||
{| class="wikitable sortable" style="text-align:center;" | {| class="wikitable sortable" style="text-align:center;" | ||
| Line 205: | Line 219: | ||
|[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2] | |[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2 | |[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2 {{DgVoodoo2Ver}}] | ||
|Direct3D 8-9 | |Direct3D 8-9 | ||
|Direct3D 11, 12 | |Direct3D 11, 12 | ||
| Line 212: | Line 226: | ||
|[https://github.com/doitsujin/dxvk DXVK] | |[https://github.com/doitsujin/dxvk DXVK] | ||
|align=left|{{Icon|Windows|Linux}} | |align=left|{{Icon|Windows|Linux}} | ||
|[https://github.com/doitsujin/dxvk/releases {{DXVKVer}}] | |[https://github.com/doitsujin/dxvk/releases {{DXVKVer}}]<br>[https://github.com/doitsujin/dxvk/actions/workflows/artifacts.yml?query=branch%3Amaster git artifacts] | ||
|Direct3D 8-11 | |Direct3D 8-11 | ||
|Vulkan | |Vulkan | ||
| Line 231: | Line 245: | ||
|{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{✓}} | |{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{✓}} | ||
|- | |- | ||
| | |[https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/drivers/zink.rst Zink] | ||
|align=left|{{Icon|Linux}} | |align=left|{{Icon|Windows|Linux}} | ||
|[https:// | |[https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/src/gallium/drivers/zink git] <br/>[https://github.com/pal1000/mesa-dist-win pal1000's Windows builds]<ref group=N name=Zink>Requires setting environment variable GALLIUM_DRIVER=zink</ref> | ||
| | |OpenGL 2.1-4.6 | ||
|Vulkan | |Vulkan | ||
|{{Green}} {{License| | |{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | ||
|- | |- | ||
|[https://github.com/crosire/d3d8to9/ d3d8to9] | |[https://github.com/crosire/d3d8to9/ d3d8to9] | ||
| Line 251: | Line 265: | ||
|Software | |Software | ||
|{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | |{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | ||
|- | |- | ||
|[https://github.com/libcg/grvk grvk] | |[https://github.com/libcg/grvk grvk] | ||
| Line 275: | Line 275: | ||
|[https://github.com/KhronosGroup/MoltenVK MoltenVK] | |[https://github.com/KhronosGroup/MoltenVK MoltenVK] | ||
|align=left|{{Icon|macOS|iOS}} | |align=left|{{Icon|macOS|iOS}} | ||
|[https://github.com/KhronosGroup/MoltenVK/releases | |[https://github.com/KhronosGroup/MoltenVK/releases {{MoltenVKVer}}] | ||
|Vulkan | |Vulkan | ||
|Metal | |Metal | ||
|{{Green}} {{License|Apache2}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | |{{Green}} {{License|Apache2}} ({{License|Permissive}}) ||{{✓}} ||{{✓}} | ||
|- | |- | ||
|[https://github.com/ | |KosmicKrisp | ||
|align=left|{{Icon|Windows | |align="left"|{{Icon|macOS}} | ||
|[https://github.com/ | | | ||
| | |Vulkan 1.3/1.4 | ||
| | |Metal | ||
|{{Green}} {{License| | |{{Green}} {{License|MIT}} ({{License|Permissive}}) | ||
|{{✓}} | |||
|{{TBD}} | |||
|- | |||
|[https://github.com/kcat/openal-soft OpenAL Soft] | |||
|align=left|{{Icon|Windows}} | |||
|[https://github.com/kcat/openal-soft/releases 1.24.3] | |||
|OpenAL | |||
|<small>no API conversion</small> | |||
|{{Green}} {{License|LGPL}} ||{{✓}} ||{{✓}} | |||
|- | |- | ||
|[https:// | |[https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/drivers/d3d12.rst GLon12] | ||
|align=left|{{Icon| | |align=left|{{Icon|Windows|Xbox}} | ||
|[https:// | |[https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/src/gallium/drivers/d3d12 git] <br/>[https://github.com/pal1000/mesa-dist-win pal1000's Windows builds] | ||
| | |OpenGL | ||
| | |Direct3D 12 | ||
|{{Green}} {{License| | |{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✓}} ||{{~}} | ||
|- | |- | ||
|[https://github.com/microsoft/D3D9On12 D3D9On12] | |[https://github.com/microsoft/D3D9On12 D3D9On12] | ||
| Line 321: | Line 330: | ||
|<small>no API conversion</small> | |<small>no API conversion</small> | ||
|{{Red}} {{License|Proprietary}} ||{{✓}} ||{{~}} | |{{Red}} {{License|Proprietary}} ||{{✓}} ||{{~}} | ||
|- | |||
|[https://github.com/darlinghq/indium Indium] | |||
|align=left|{{Icon|Linux}} | |||
| | |||
|Metal | |||
|Vulkan | |||
|{{Green}} {{License|0BSD}} ({{License|Permissive}}) ||{{~}} ||{{~}} | |||
|- | |||
|vkd3d | |||
|align=left|{{Icon|Linux}} | |||
|[https://source.winehq.org/git/vkd3d.git/ {{VKD3DVer}}] | |||
|Direct3D 12 | |||
|Vulkan | |||
|{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✓}} ||{{✗}} | |||
|- | |||
|[https://github.com/AlpyneDreams/d8vk D8VK] | |||
|align=left|{{Icon|Windows|Linux}} | |||
|[https://github.com/AlpyneDreams/d8vk/releases 1.0] | |||
|Direct3D 8 | |||
|Vulkan | |||
|{{Green}} {{License|zlib}} ({{License|Permissive}}) ||{{✗}} ||{{✗}}<ref group=N name=d8vk>Merged to DXVK. Use that instead</ref> | |||
|- | |||
|[https://github.com/iXit/wine-nine-standalone Gallium Nine] | |||
|align=left|{{Icon|Linux}} | |||
|[https://github.com/iXit/wine-nine-standalone/releases v0.10] <small>(WIP)</small> | |||
|Direct3D 9 | |||
|Gallium | |||
|{{Green}} {{License|LGPLv21}} ({{License|Copyleft}}) ||{{✗}} ||{{✗}}<ref group=N name=galliumnine>Deprecated in favor of more portable translation layers, such as DXVK or WineD3D</ref> | |||
|- | |- | ||
|[https://github.com/ValveSoftware/ToGL ToGL] | |[https://github.com/ValveSoftware/ToGL ToGL] | ||
| Line 328: | Line 365: | ||
|OpenGL | |OpenGL | ||
|{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✗}} ||{{✗}} | |{{Green}} {{License|MIT}} ({{License|Permissive}}) ||{{✗}} ||{{✗}} | ||
|} | |} | ||
<references group=N /> | <references group=N /> | ||
| Line 371: | Line 401: | ||
==See also== | ==See also== | ||
* [[Compatibility layers]] - Allows software written for one platform to run on another. | * [[Compatibility layers]] - Allows software written for one platform to run on another. | ||
==Notes== | |||
<references group=Note /> | |||
==References== | ==References== | ||