0

After two years now I wanted to continue working on my sandbox project which I actually used to learn and experiment with various C++ features and DirectX. So far I have simple elements for 2d adventures with a very basic engine, external map loading, scripts and this kind of stuff. So far the project was ported once from SDL to DirectX 9 and now I am considering to move on to DirectX 11 and the question would be: should I consider doing the step from DX9 to DX11 even though I am no going to make any 3d content at all?

Although often asked in various threads like this or this one which tech to use I couldn't find a suitable answer as people are referring to 3d rather than 2d.

Christian Ivicevic
  • 965
  • 11
  • 28

2 Answers2

0

There's two central drawbacks to moving past Direct3D 9.0c.

  1. You have a slightly higher minimum requirement when using FEATURE_LEVEL_9_1 in a Direct3D version that has lower feature levels. Some of the lowest end cards that can work in Direct3D9 are not quite able to satisfy the low requirements of level 9_1.
  2. The minimum required operating system for 10 and up is Vista, and for 11 you need Vista SP2 (with platform pack). If the XP market is important to you, this may be a showstopper.

You also have more and more trouble using the DXSDK with Visual Studio versions 2012 and 2013, as those use the new Windows Kits which have conflicting headers present and require much care in picking up the right definitions and libraries.

The benefits are many, among others continued support of the SDKs involved. When the DirectX SDK was folded into the Windows Kits, you lost both D3DX and Direct3D 9. As the SDK was discontinued, there's no fixes for the bugs existing back in June 2010, and which still exist to this day. As modern DirectX is part of the platform, it's much more serviced and integrated into the IDE, and deployment is somewhat easier.

There's a bit more overhead in the amount of work you will need to do to get something equivalent running in D3D11 compared to fixed function pipeline D3D9, but it's not necessarily consuming more resources as alluded by others here.

I would go so far to suggest that a more modern DirectX version is better for doing 2D graphics, as you're less tied to the 3D-oriented semantics that Direct3D 9 used to have, and can make your shaders and data bindings in a much more true-to-the-data way.

If you're starting from scratch, I would not recommend ever starting with an essentially dying legacy technology. Go for D3D11 or modern OpenGL.

Lars Viklund
  • 4,104
  • 1
  • 19
  • 23
  • 3
    The main drawbacks to using Direct3D 9 is that on modern versions of Windows, you get a lot of appcompat legacy behavior to try to make sure old programs designed for Windows XP work on Windows 7, Windows 8.x, Windows 10, etc. These behaviors may not be what you actually want. – Chuck Walbourn Dec 27 '14 at 22:05
  • 3
    For 2D games, take a look at SpriteBatch in the DirectX Tool Kit for Direct3D 11. Remember that all versions of D3DX are deprecated, including D3DX9, and the replacements are all designed for Direct3D 11. – Chuck Walbourn Dec 27 '14 at 22:06
  • 3
    Another thing to keep in mind: Direct3D 9 lets you target Windows XP. Direct3D 11 will let you target Win32 desktop games, Windows Store, Windows phone, and Xbox One. Windows XP is still important for China, Russia, and South Korea, but you need to be targeting some specific kinds of hardware as well. For the rest of the world, DirectX 11 is well supported at various hardware feature levels. – Chuck Walbourn Dec 27 '14 at 22:10
-3

well, as for 2d games, dx 9 will work fine as because dx11 is for high tech 3d features such as picture smoothness and tesselation.

so if you are developing 2d games then its not a good option to make your game a resource hunter because dx11 consumes more memory :)