Where is the SDK for DirectX on Win10? - c++

I was just told that the SDK that I was using (Jun 2010) is not to be used anymore and that I need to use whatever new one they have included to Win10. Well where is it?
I am trying to start a graphics demo solution and I can't call D3D11 functions because of Linker errors which to me means I need to include libraries and such.
If anyone can help me figure this out so I can get the ball rolling then I'll be good.

The Microsoft Doc page Where is the DirectX SDK? tells you to use the Windows SDK, specifically the Windows 8.0 SDK, Windows 8.1 SDK, or Windows 10 SDK to do DirectX development (which is assumed to be Direct3D 11 or Direct2D/DirectWrite). Direct3D 12 requires the Windows 10 SDK.
If you are using Visual Studio 2013 or later, then you already have the Windows 8.1 SDK and optionally the Windows 10 SDK.
An important detail is that the D3DX library (D3DX9, D3DX10, and D3DX11) is deprecated and only available in the legacy DirectX SDK. That means D3DX11 is not part of the Windows SDK, and you shouldn't use it.
UPDATE: For older projects, the legacy DirectX SDK 'end-of-life' June 2010 release of the D3DX9, D3DX10, and D3DX11 library is provided in this NuGet package which is to be combined with the Windows 10 SDK. See this blog post for the full details.
For HLSL, you use D3DCompile directly or the FXC that comes with the Windows SDK. For math, you use DirectXMath that comes with the Windows SDK. If you are using legacy Effects 11, you can use the version from GitHub. I recommend you also take a look at DirectX Tool Kit for DirectX 11 and it's tutorials. For a complete list of replacements for D3DX, see Living without D3DX.
If you really want to continue to use the legacy DirectX SDK components with Visual Studio 2012 or later, you can but you should note the details at the bottom of the MSDN page above. Notably you have to reverse the include/lib path order when you add the legacy DirectX SDK to your project.
For a complete catalog of where the various bits of the old DirectX SDK ended up, see DirectX SDKs of a certain age, DirectX SDK Tools Catalog, DirectX SDK Samples Catalog, as well as the Living without D3DX article above.
The Direct3D 11 Debug Device for Windows 10 is not installed by any Windows SDK or by the legacy DirectX SDK. It is a windows optional feature. See Direct3D SDK Debug Layer Tricks.
The actual "DirectX Runtime" has been part of the operating system since Windows XP Service Pack 2. The legacy DirectX SDK never installs "DirectX" on any modern version of Windows, and only deploys some optional side-by-side stuff. It's not required at all if you using the Windows SDK. See Not So Direct Setup.

Related

Effects11d.lib file, DirectX11 on visual studio 2017/2015

Nowdays my team study DirectX11 with book which name is introduction to 3D game programming with DirectX11.
we are trying to set up our visual studio(ver 2017, 2015) as the book says. But we failed because Effects11d.lib file is missing.
Where can we download or find that file?(the file isn't on C drive where windows installed)
If there is any other solution, please give me an advice
The DirectX 11 book you are using most likely expects you to be using the legacy DirectX SDK. The issue is that the Windows SDK that comes with VS 2015 and VS 2017 contains newer headers than those that shipped in the now 8 years old legacy DirectX SDK where they overlap, and some portion of the legacy DirectX SDK is deprecated so is not present on your system already.
You can still use the legacy DirectX SDK with VS 2015 / VS 2017, but you need to take some extra steps. Most of those steps are detailed at the bottom of this MSDN page.
There are also known issues trying to install the legacy DirectX SDK. See this post.
You should also review the post: Where’s DXERR.LIB?
Specifically using the Effects 11 library, you should use the latest from from GitHub which you can also find on NuGet. The latest version works both with and without using the legacy DirectX SDK.
Ideally you should avoid using the legacy DirectX SDK all together. See Living without D3DX and The Zombie DirectX SDK for details.

Visual Studio for Windows Media Foundation

I am going to build sample application using Windows Media Function, but I am confused with Visual Studio version that need to be used. Also how I can start with this sample application. Do I need to download Windows Developer SDK for building this sample? Also what tools I need to use to build UI components.
I want to build sample application for playing local video file.
To develop classic/desktop applications using Media Foundation API it is sufficient to use simplest edition of Visual Studio, e.g. Visual Studio 2015 Community Edition along with Windows 10 SDK (do not get confused by "Windows 10" in the title, appropriately built applications can run in Windows XP and more recent). You will have to look up desktop application samples in older Windows SDK versions up to version 7.1, since version 8 they were omitted (later they were put online here). At the same time, there are also newer Media Foundation samples available in the format of Windows 10 UWP applications, you can built them with the mentioned toolset as well.

Can I Install Visual C++ Redistributable 2010 and/or DirectX 10 to a Particular Folder?

I am looking to create a portable version of a program for Windows 8 that requires VCRedist 2010 and DirectX 10 to run properly. However, I am unable to use the installers because they attempt to install to the system path and, while the computer I am working on has administrator rights, I do not have it on the computers I will be transferring it to. After a lot of research, It seems I can include the VCRedist 2010 and DirectX 10 dll files in the application folder, but I have been unable to find a list of all the required dlls. If this is true could someone provide me with a list of them, and if it's not true does anyone know of an alternative way to do this?
System info: 32 bit OS, Windows 8
The first thing to say here is that you never redistribute DirectX. It is part of the operating system and can only be updated by a service pack, upgrading the OS, or through Windows Update. That has been true since Windows XP Service Pack 2, but it is a poorly understood fact.
The DirectX End-User Runtime packages (aka DXSETUP and DXWSETUP) never installs any version of DirectX on any version of the operating system! That has been true for over a decade.
If your application makes use of one of the side-by-side optional components that ship in the legacy DirectX SDK such as D3DX9, D3DX10, D3DX11, D3DCompile #43, XAudio 2.7, XInput 1.3, or XACT, then you must use the legacy DirectSetup package to redist those DLLs as they are never part of the operating system. Using DirectSetup always requires administrator rights.
See Not So DirectSetup for a fuller explanation.
For Windows 8 standard user only application, a better option is to use DirectX 11 and make use of one of the many open source replacements for D3DX functionality. If you need XAudio, you can use XAudio 2.8. If you use D3DCompile, you can include it side-by-side with your application from the Windows 8 SDK. If you use XInput, you can use XInput 1.4 or the older XInput 9.1.0.
Note that Windows 8.0 is now end-of-life. While still supported as a target for Visual Studio 2015, those users are expected to upgrade to either Windows 8.1 or Windows 10 to maintain support. In Windows 8.1, the D3DCompile #47 DLL is already part of the operating system.
Visual C++ 2010, 2012, 2013, and 2015 DLLs can be included side-by-side (aka application local deployment). You can use the Windows 8.1 SDK with VS 2010 using props files, but I'd recommend moving to a newer version of Visual Studio which can more easily make use of Windows 8.1 SDK content.
Another option here is to use VS 2013, target Windows 8 Store, and use that to handle all the deployment which does not require admin rights. You still have to use Direct3D 11 and avoid all use of legacy DirectX SDK components including D3DX9/D3DX10/D3DX11.
See Where is the DirectX SDK?.

directx 9 cannot find the include libraries

I wanna start learning DirectX in Visual C++ 2010, but it says that d3dx11 and d3dx9 can't be found when I include d3dx9.h, I can play games in DirectX 11 and dxdiag says my computer is running directX 11, but when I searched for DirectX 11 in C drive and my D-Drive, it couldn't find anything. So I decided to install DirectX 11 and then I got a folder after installing, but it didn't have any include or bin folders, so I couldn't go to properties and VC++ and add the include directories. Decided to try DirectX 9 instead to start with, but when I installed DirectX 9 June 2010 version, I went to C\Microsoft DirectX SDK (June 2010) there is no directories, only DirectX utilities and documentation for c++ and sample browser and Command prompt. So I don't really know what to do anymore, I have tried to install d3dx9.lib and put in in the default lib folder for VS 2010. but no success, But I have DirectX 9 2004 summer libraries and Include folders set up for visual c++, but that is such an old version so it doesn't include d3dx9.lib. I'm running Windows 8.1 64 bit OS.
The DirectX SDK and all version of the D3DX libraries are both deprecated.
The 'modern' solution is to use the Windows 8.x SDK which comes with Visual Studio 2012 and Visual Studio 2013. You can install the Windows 8.1 SDK 'standalone' and use it with Visual Studio 2010 by using .props files. See MSDN and this blog post for all the details.
You can mix using the Windows 8.x SDK with the legacy DirectX SDK in order to continue to use D3DX for Win32 desktop applications--you cannot use the DirectX SDK for Windows Store apps, Windows phone, or Xbox One. See the instructions on MSDN for how to handle the include/lib path directories. If you are going to continue to use the legacy DirectX SDK, you need to be aware of a number of things:
The DirectX SDK (June 2010) installer has some compatibility issues with systems that have VS 2010 SP1 REDIST installed. See this post.
The DirectX SDK (June 2010) does not have the latest developer debug runtime for Windows 8.1. You have to install the Windows 8.1 SDK, VS 2013, or the VS 2013 remote debugging tools to get the DEBUG layers and REFERENCE device. See this post.
There is no support for the Direct3D 9 DEBUG device on Windows 8.1.
The "PIX for Windows" tool in the DirectX SDK does not work for Direct3D 10.x or Direct3D 11.x on Windows 8.1, Windows 8.0, or Windows 7 SP1 with the DirectX 11.1 Runtime installed. Use the Visual Studio 2013 Graphics Diagnostics, or Intel/AMD/NVIDIA's GPU tools.
If you are deploying a game that needs the legacy DLLs like D3DX, be sure to use the April 2011 refreshed version of DXSETUP and not the copy that is in the DirectX SDK (June 2010). See this post and be sure to read Not So DirectSetup.
Given all that, your life will be a lot easier if you just use Direct3D 11 and avoid the legacy DirectX SDK and D3DX entirely. You can find many Direct3D 11 replacements for D3DX that only requires the Windows 8.x SDK along with a bunch of updated samples. See Living Without D3DX, DirectX Tool Kit, and DirectX SDK Samples Catalog. You can get all that to work with VS 2010, but it's a lot easier to get Visual Studio 2013 Express for Windows Desktop (for Win32 desktop applications) and/or Visual Studio 2013 Express for Windows (for Windows Store apps and Windows phone apps).
PS: Even back when the DirectX SDK was still the supported way to get Direct3D headers for VS 2010, it was not available until you manually added the include/path directories to your project. That's why you can't include "d3dx9.h" in your project freshly created.

What SDK should I use for DirectX 11?

I am very confused on what I need in order to use the latest version of the DirectX SDK.
There is the DirectX SDK (June 2010), which is apparently deprecated and there is the Windows SDK for Windows 8.1.
What is so confusing is that I can't figure out if the Windows SDK for 8.1 will work using Windows 7 and Visual Studio 2013 for Desktop, or if I have to use the DirectX SDK (June 2010) with Windows 7 and Visual Studio 2013 for Desktop.
Also, if I use Windows SDK for 8.1, how do I include it in my Visual Studio Projects. Any help?
The DirectX SDK has been rolled into the Windows SDK starting with version 7.0. Unless you need certain deprecated features such as DXUT, specifically the runtime shader compiler, you'll be fine just running with the Windows SDK.
If, however, you want to use the deprecated features of the DirectX SDK, you'll need to include both SDKs, with the Windows SDK set to have higher priority than the DX SDK. If you include both and see a redefinition warning, then you included them in the wrong order.
If you have Visual Studio 2013 Express for Windows Desktop (or VS 2013 Pro or better), then you have the Windows 8.1 SDK and will use it for any C++ project by default. To support 'down-level' systems such as Windows 8.0, Windows 7 and/or Windows Vista, you need to set the _WIN32_WINNT preprocessor symbol appropriately (_WIN32_WINNT=0x0601 for Windows 7 or later). There's nothing else special you need to do, and you can use DirectX 11.0, DirectXMath, XInput 9.1.0, etc. on all these platforms without any need to use the legacy DirectX SDK. The HLSL compiler (D3DCompile #47) DLL is available in the Windows 8.x SDK to just copy into your apps folder for Win32 desktop apps, although on Windows 8.1 it is already part of the OS as well.
Where is the DirectX SDK (2013 Edition)?
Where is the DirectX SDK?
Ideally you would avoid using D3DX11 and use any of the many alternatives available that support Win32 desktop apps on Windows Vista or later.
You can of course still also use the legacy DirectX SDK with the Windows 8.x SDK (which unfortunately you have to for XAudio 2.7 on Windows Vista/Windows 7; XAudio 2.8 is part of Windows 8.x), but you need to remember that the include/lib path order is reversed since the headers in the DirectX SDK are now older than those in the Windows 8.x SDK. This is covered on MSDN. Remember that if you use the legacy DirectX SDK components like D3DX, XAudio 2.7, XInput 1.3, XACT, D3DCompiler #43, etc. then you also need to rely on the legacy DirectSetup deployment. In this case, it is recommended you make use of the refreshed version of the REDIST rather than the one that shipped in the legacy DirectX SDK.
BTW, if you are trying to target Windows XP with the "v120_xp" Platform Toolset, you are actually using the Windows 7.1 SDK and not the Windows 8.x SDK since the Windows 8.x SDK does not support Windows XP. See this post for the many caveats of this scenario, or save your sanity and just let Windows XP go away :)