Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DirectX SDK vs Windows SDK: which one to use?

I have an old game engine (sort of) based on DirectX 10, which I've been planning to move to DX 11. I have also just installed Windows 8 and VS 2013 and, while trying to run this old project I've learnt that DirectX SDK has been deprecated and now replaced by Windows 8 SDK. In this case I wonder whether it makes sense to update to DX 11 or should I try and make my engine use the new Windows 8 SDK. There are several things I'd like to know before I make the decision:

1) Is Windows 8 SDK the thing to learn now or is DX 11 still relevant? Like, if you want to learn C++ you should learn C++11, so if you want to learn Direct3D now, you should learn Windows 8 SDK?

2) There are plenty of great resources for learning DirectX SDK: a lot of tutorials, Microsoft's own samples, NVidia Graphics SDK samples, AMD Radeon SDK samples etc. Are there any similar quality materials available for Windows 8's Direct3D or just msdn at the moment?

3) Will my Windows 8 SDK based engine run only on Windows 8?

4) Any first hand experience / comparisons between the two?

Many thanks!

like image 979
jaho Avatar asked Dec 03 '13 21:12

jaho


People also ask

What is DirectX SDK used for?

Starting with Windows 8, the DirectX SDK is included as part of the Windows SDK. We originally created the DirectX SDK as a high-performance platform for game development on top of Windows. As DirectX technologies matured, they became relevant to a broader range of applications.

Do I need Windows 10 SDK?

The windows SDK is necessary if you intend to develop windows applications (with GUI, low-level graphics, windows filesystem specific I/O, tweaking registry settings, developing windows services or device drivers, etc etc).

Does Visual Studio need Windows SDK?

Install the Visual Studio SDKThe Visual Studio SDK (Software Development Kit) is an optional feature in Visual Studio setup. You can also install the VS SDK later on.

Where do I put DirectX SDK?

With all that said, the default install location for the legacy DirectX SDK is C:\Program Files (x86)\Microsoft DirectX SDK (June 2010) on a 64-bit system or C:\Program Files\Microsoft DirectX SDK (June 2010) on a 32-bit system.


1 Answers

1) Is Windows 8 SDK the thing to learn now or is DX 11 still relevant?

What' happened exactly: they deprecated some stuff from standalone DirectX SDK, stripped it a bit and merged into Windows SDK. Also renamed some headers. That it all. Nothing to learn.

Actually you must unlearn (i.e. forget) some things. Notably D3DX, Effect framework, etc. As they are stripped off from the new SDK, you need to find alternative libs to replace those (for example, Effect11 source is available; for bitmap loading use DirectXTK or FreeImage; for meshes use Assimp; find or roll out your own sprite and font engines etc.).

OK, need to say, they've added DirectX 11.1 (Win8) and 11.2 (Win8.1). But, their features are too minor and very specific to say that you must learn it.

2) There are plenty of great resources for learning DirectX SDK [...] Are there any similar quality materials available for Windows 8's Direct3D or just msdn at the moment?

There is a new set of samples on MSDN, e.g. Windows Store Apps samples. They are all messed up with other (non-DirectX) Windows SDK samples, so use search. As API itself remain unchanged, there is nothing really new for desktop apps. You can easily adapt old samples to build without standalone DirectX SDK, by replacing deprecated stuff.

3) Will my Windows 8 SDK based engine run only on Windows 8?

Nope, with this SDK you can target to anything starting from Windows XP. But you porting to DirectX 11 API, that means that your apps will need at least Vista SP2. You can preserve your DirectX 10 code for Vista with no SP targets. And to run under Win XP, you will need DirectX 9 code path. Or OpenGL in all cases of course ;)

4) Any first hand experience / comparisons between the two?

Well, Microsoft deprecation style and moving things around with no gain is sometimes frustrating. But we have become accustomed.

Porting from DirectX 10 to DirectX 11 API is really straightforward. But porting extension stuff, such as D3DX is a pain: look my answer here for some useful links.

My own opinion is that you can not rely on Microsoft's secondary libs as they can be deprecated and cut of at the worst possible moment. But solutions of yours they will cannot. So if you have texture loader based on FreeImage or on your own lib, you have a pointer to bitmap data and can use it anywhere: DirectX, OpenGL, blit it into window directly, whatever you want. If you have your own shader effect engine, you will never go into trouble of impossibility to use their own effect framework in Windows Store Apps.

I tend to use only core APIs of Microsoft anywhere and universal, portable third party libs for anything else: this reduces coupling and dependency on one's decisions and gives more freedom. So if one lib is broken I do not need to rewrite all of them.

like image 170
Ivan Aksamentov - Drop Avatar answered Nov 08 '22 07:11

Ivan Aksamentov - Drop