Difference between revisions of "Wrappers"
(→2000's and later APIs) |
FosterHaven (talk | contribs) (rewrote the lead and comparisons just enough to fix the existing problems for now) |
||
Line 1: | Line 1: | ||
{{WIP}} | {{WIP}} | ||
− | A '''wrapper''' is a common name for a | + | A '''wrapper''' is a common name for a technology used to transparently replace calls made to one graphics API with calls made to another. This can be used to run software on systems they were not designed for, such as running old PC games made for 3Dfx Glide graphics card on modern Windows 10 systems, or running modern Windows-only DirectX 11 games on Linux. A wrapper often takes the form of a shared library that replaces the original, though it can also be a standalone interceptor. Wrappers aren't needed for OpenGL since its APIs don't require much translation. Despite this, [https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ a wrapper was created for it anyway]. |
==90's APIs== | ==90's APIs== | ||
Line 66: | Line 66: | ||
===Comparisons=== | ===Comparisons=== | ||
;[http://www.zeus-software.com/downloads/nglide nGlide] | ;[http://www.zeus-software.com/downloads/nglide nGlide] | ||
− | + | Currently the best Glide wrapper, but it's closed-source. All three public API versions are supported; 2.11, 2.60 and 3.10, and it reads them using Direct3D 9. Vulkan output was added in 2.0, which allows 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]. | |
;[http://dege.freeweb.hu/ dgVoodoo 2] | ;[http://dege.freeweb.hu/ dgVoodoo 2] | ||
− | + | Despite the name, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Glide 2.11, 2.45, 3.1, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. This wrapper outputs Direct3D 11 with different device types as wrapping output such as hardware or software rendering. | |
;[[Wine]] | ;[[Wine]] | ||
− | Wine works | + | A compatibility layer for Linux. On its own, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windows. |
;[https://www.dxgl.org/ DXGL] | ;[https://www.dxgl.org/ DXGL] | ||
− | A free replacement for | + | A free replacement for ddraw.dll outputting OpenGL. It's designed to overcome driver bugs, mainly in Windows Vista and beyond. It adds various rendering enhancements such as display scaling and filtering options. DXGL also supports Direct3D 7, however it's currently under development and doesn't work with many programs. |
==2000's and later APIs== | ==2000's and later APIs== | ||
Line 162: | Line 162: | ||
===Comparisons=== | ===Comparisons=== | ||
;[https://github.com/doitsujin/dxvk DXVK] | ;[https://github.com/doitsujin/dxvk DXVK] | ||
− | A | + | A wrapper for Direct3D 9-11. DXVK was designed to speed up support for Direct3D 11 games in [[Wine]] and, later, [[Proton]] since a native implementation seemed unlikely. |
:;[https://github.com/Joshua-Ashton/d9vk D9VK] | :;[https://github.com/Joshua-Ashton/d9vk D9VK] | ||
− | : | + | :A fork for Direct3D 9, originally created when DXVK was designed for Direct3D 10 and 11. Was merged back into the main project in version 1.5. |
;[[Wine]] | ;[[Wine]] | ||
− | Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It | + | Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It's possible to use Wine's wrapper in Windows using different forks. |
;[https://github.com/iXit/wine-nine-standalone Gallium Nine] | ;[https://github.com/iXit/wine-nine-standalone Gallium Nine] | ||
− | + | An open-source implementation of the Direct3D 9 library. Gallium Nine is different since it uses calls native to Linux as opposed to another graphics API like Vulkan. This allows applications to run at near-native speeds. The catch is that it relies on Gallium, Linux's open source 3D renderer, and any driver that doesn't use Gallium is less likely to work (such as NVIDIA's proprietary drivers). | |
;[https://source.winehq.org/git/vkd3d.git/ vkd3d] | ;[https://source.winehq.org/git/vkd3d.git/ vkd3d] | ||
− | + | A work-in-progress Direct3D 12 to Vulkan wrapper created for Wine by Valve. | |
;[https://github.com/disks86/VK9 VK9] | ;[https://github.com/disks86/VK9 VK9] | ||
− | + | A Direct3D 9 wrapper that outputs to Vulkan. | |
==External links== | ==External links== | ||
− | [https://www.gamingonlinux.com/articles/dxvk-102-is-out-with-some-bug-fixes-d9vk-seems-to-be-progressing-nicely.13868/ | + | * [https://www.gamingonlinux.com/articles/dxvk-102-is-out-with-some-bug-fixes-d9vk-seems-to-be-progressing-nicely.13868/page=2#r151939 State of Direct3D 9-12 translation layers] by DXVK author YoRHa-2B (2019-04-02) |
==References== | ==References== | ||
{{Reflist}} | {{Reflist}} |
Revision as of 15:08, 19 December 2019
A wrapper is a common name for a technology used to transparently replace calls made to one graphics API with calls made to another. This can be used to run software on systems they were not designed for, such as running old PC games made for 3Dfx Glide graphics card on modern Windows 10 systems, or running modern Windows-only DirectX 11 games on Linux. A wrapper often takes the form of a shared library that replaces the original, though it can also be a standalone interceptor. Wrappers aren't needed for OpenGL since its APIs don't require much translation. Despite this, a wrapper was created for it anyway.
Contents
90's APIs
Name | Operating System(s) | Latest Version | Translates | Into | Active | Recommended |
---|---|---|---|---|---|---|
nGlide | Windows | 2.10 | Glide | Vulkan, Direct3D 9 | ✓ | ✓ |
dgVoodoo 2 | Windows | 2.62.3 | Glide, DirectX 1-9 | Direct3D 11 | ✓ | ✓ |
Wine DirectX | Windows, Linux, macOS | 9.0 (Linux, macOS) 9.7 Windows |
DirectX 1-11 | OpenGL | ✓ | ✓ |
DXGL | Windows | 0.5.17 | DirectX 1-7 | OpenGL | ✓ | ✗ WIP |
Glidos | Windows | 1.53b | Glide (DOS) | ? | ✗ | ? |
OpenGlide | Windows | 0.09 Alpha | Glide | OpenGL | ✗ | ? |
psVoodoo | Windows | 0.13 | Glide | Direct3D 9 | ✗ | ? |
Comparisons
Currently the best Glide wrapper, but it's closed-source. All three public API versions are supported; 2.11, 2.60 and 3.10, and it reads them using Direct3D 9. Vulkan output was added in 2.0, which allows it to work under Linux using Wine 2.10.0 and newer.[1] nGlide also supports high resolution modes. See the compatibility list.
Despite the name, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Glide 2.11, 2.45, 3.1, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. This wrapper outputs Direct3D 11 with different device types as wrapping output such as hardware or software rendering.
A compatibility layer for Linux. On its own, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windows.
A free replacement for ddraw.dll outputting OpenGL. It's designed to overcome driver bugs, mainly in Windows Vista and beyond. It adds various rendering enhancements such as display scaling and filtering options. DXGL also supports Direct3D 7, however it's currently under development and doesn't work with many programs.
2000's and later APIs
Name | Operating System(s) | Latest Version | Translates | Into | Active | Recommended |
---|---|---|---|---|---|---|
DXVK | Linux | 1.5 | Direct3D 9-11 | Vulkan | ✓ | ✓ |
Wine Direct3D | Windows, Linux, macOS | 9.0 (Linux, macOS) 9.7 Windows |
Direct3D 1-11 | OpenGL | ✓ | ✓ |
Gallium Nine | Linux | 0.5 | Direct3D 9 | Native | ✓ | ~ WIP |
vkd3d | Linux | 1.1 | Direct3D 12 | Vulkan | ✓ | ✗ WIP |
MoltenVK | macOS, iOS | 1.0.39 | Vulkan | Metal | ✓ | ? |
Zink | Linux | Git | OpenGL | Vulkan | ✓ | ? |
D9VK | Linux | Git | Direct3D 9 | Vulkan | ✓ | ✗ |
d3d8to9 | Windows | 1.10.0 | Direct3D 8 | Direct3D 9 | ✓ | ✗ |
DXUP | Windows, Linux | Git | Direct3D 9-10 | Direct3D 11 | ✗ | ✗ |
VK9 | Windows, Linux | 0.29.0 | Direct3D 9 | Vulkan | ✗ | ✗ |
Comparisons
A wrapper for Direct3D 9-11. DXVK was designed to speed up support for Direct3D 11 games in Wine and, later, Proton since a native implementation seemed unlikely.
- A fork for Direct3D 9, originally created when DXVK was designed for Direct3D 10 and 11. Was merged back into the main project in version 1.5.
Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It's possible to use Wine's wrapper in Windows using different forks.
An open-source implementation of the Direct3D 9 library. Gallium Nine is different since it uses calls native to Linux as opposed to another graphics API like Vulkan. This allows applications to run at near-native speeds. The catch is that it relies on Gallium, Linux's open source 3D renderer, and any driver that doesn't use Gallium is less likely to work (such as NVIDIA's proprietary drivers).
A work-in-progress Direct3D 12 to Vulkan wrapper created for Wine by Valve.
A Direct3D 9 wrapper that outputs to Vulkan.
External links
- State of Direct3D 9-12 translation layers by DXVK author YoRHa-2B (2019-04-02)