Libretro API now supports experimental Direct3D11 hardware rendering!

In broad terms OpenGL and D3D (up to version 11) are high level APIs and Vulkan and D3D12 are low level APIs.

D3D is proprietary to Microsoft and only available on Windows, OpenGL and Vulkan are open standards that are defined by the Khronos Group, but can be extended by anyone, and are generally available on most platforms.

High level APIs are generally much easier to use for most graphics programming tasks, and are often make it easier for GPU manufacturers to write driver optimisations. Hence many games actually run better using D3D11 than D3D12, particularly on Nvidia GPUs.

Low level APIs allow developers to more directly address the graphics hardware, making them harder to use but also potentially faster or capable of more intricate techniques. This often makes them a good fit for emulation development as programmers can more closely approximate the behaviour of the original hardware.

As to which you should choose? That will depend on a number of factors: * Your hardware and OS have to support the API in question. * The quality of renderer implementation may vary by API for any given emulator, some are better maintain or more featured than others * How good the drivers for your card are for any given API or API feature. Some emulators black list certain drivers because they fail to properly support certain features.

There's no single answer over which is best, you'll need to do the research on a case by case basis.

/r/emulation Thread Parent Link - medium.com