Should anyone be writing new apps with DX10 when DX11 feature levels exist?

Started by
8 comments, last by 21st Century Moose 11 years, 9 months ago
Title explains itself.

If I have dx9 app and want to upgrade apis, would there be any reason to write it with dx10 api when i can write with dx11 api and use feature levels to target the correct hardware (dx10)?

-J

------------------------------

redwoodpixel.com

Advertisement
the only reasons I can think about is that in DX11 you'll have to write your own classes for Font rendering and Sprite rendering plus you'll have to compile the Effect framework yourself (if you want to use it).
But I don't see these as tasks that would scare a developer that choose the DX11 way.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

Thanks kunos!

If anyone else has points to raise that would be great.

------------------------------

redwoodpixel.com

There really isn't any reason to use DX10 anymore, DX11 is essentially a superset of the same functionality and can run on a wider range hardware. Also you don't even have to write your own Font/Sprite classes anymore, since Shawn Hargreaves has provided us with DirectXTK.

The Effects11 framework is more stripped down compared to the version that shipped with D3D10, and like kunos mentioned you have to compile it yourself. However I really feel that the way the Effects framework is set up has become a pretty poor fit for the way that shaders have evolved, and I don't really recommend using it.

Also you don't even have to write your own Font/Sprite classes anymore, since Shawn Hargreaves has provided us with DirectXTK.


Wow! What a find! I didn't know about this one, thank you very much.
I also agree about the Effect, when I started with DX11 I thought it was going to be impossible to do without, but not only it is possible, but it is pretty easy and everything makes much more sense.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

Hey Guys,

So how does this work with GPU's that dont have dx11 drivers or the OS doesn't have the d3d11 lib. So I guess this is vista before service pack 2 or 3? Is this a tiny fraction of machines (Microsoft forces these updates don't they?)?

------------------------------

redwoodpixel.com

The last service pack for Vista is SP2, but that doesn't include the DirectX 11 update.
If you have automatic updating via Windows Update enabled though, you'll have it.
I'm not sure what the driver situation is for DX10 vs. DX11 on lower feature levels. As far as I know most of the Nvidia, AMD, and Intel GPU's support DX11 so I don't think it's an issue unless perhaps the user is on Vista and hasn't updated their drivers in a very long time.

As far as the OS-level components goes, Windows 7 comes with the D3D11 runtimes so you don't need to worry about that case. However with Windows Vista it's possible that the D3D11 components aren't installed if they haven't run the standard Windows Updates. This article explains how to detect this case, and also how to use the Windows Update API to initiate an install of the required components.
So sandy bridge didnt support dx11, but came out long after windows 7 was released, so the odds of a sandy bridge Vista user are slim to none (in theory).

------------------------------

redwoodpixel.com

Some research at the likes of the Steam hardware surveys helps a lot here. There's definitely a tendency to overstate the importance of targetting older hardware; over 90% of systems in the survey now have D3D10/11 class hardware. Link: http://store.steampowered.com/hwsurvey/videocard/.

Regarding OS, Windows 7 is at close to 70%, and Vista (total for all variants) has dropped well below even XP 32-bit, with 5.83% for 64-bit Vista and 5.03% for 32-bit Vista. Link: http://store.steampowered.com/hwsurvey/#cat0.

It can be quite safely said that Vista users who've never bothered to install updates are not a viable percentage of any concievable target audience, and as a consequence this is a non-issue. Aim for 11 with feature levels and you're hitting on the high end of somewhere between 70% and 80% of target; aim for 10 only and you're hitting only marginally less.

The concerning thing is that XP is still holding reasonably steady (which explains the discrepency between ~80% with Vista/7 and ~90% with D3D10/11 class hardware), but since we're talking about D3D10 or 11 that's an irrelevance for the purposes of this discussion.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement