# Which DirectX Version to use for a low poly game?

Which DirectX Version (10, 11 or 12) is recommended to use, if you want to have a low-poly game with shaders, shadow and aliasing. But not normal or height maps. Moreover my question is, because once we upgraded from directx 9 to 11 now, the GPU usage for the game was like duplicated. I can not even play it with CPU at all. It means directx 11 has higher usage even then 9.

If using Directx10, could it help to decrease the gpu usage? (Which was caused by directx upgrade)

• Use anything you want. – Ocelot Nov 14 '18 at 7:45
• But I want that version with less GPU/graphic cards usage. – Ryen Sekret Nov 14 '18 at 7:45
• It all depends on how you use the API – Ocelot Nov 14 '18 at 7:48
• Aren't modern apis more efficient and work better with modern gpus? – Sidar Nov 14 '18 at 8:17
• Modern APIs give you more control over the efficiency, but it's still the way you choose to use the API in your game that will determine the performance it exhibits. For the type of game OP describes, all of these versions should be up to the task just fine when used correctly — but with any API there are opportunities to use it incorrectly and incur unnecessary performance costs. – DMGregory Nov 14 '18 at 16:26

You generally want to use the latest version that is compatible with your target platform. For most people that means DirectX11, since DirectX12 is not supported on versions of Windows (i.e. Windows 7) that are still widely used.

But, with every version, you need to make sure that you are using it in the most efficient way. Just swapping the calls for the newer version won't necessarily work efficiently, and you may also need to make changes to your resources to make them work with the new version. If you do this correctly, you should not find that DirectX11 is slower than DirectX9.

• While it seems unintuitive at first, poly count is not the real driver for performance these days. It's basically the same cost to render 10,000 triangles as it is to render 1 in a single Draw using 'static' vertex/index buffers--ignoring the upload cost of the extra memory which you typically do at 'level load' instead of every frame. State changes (i.e. material settings) and number of draw batches are really where the costs add up. – Chuck Walbourn Nov 14 '18 at 21:13