Microsoft has announced the extension of the DirectX Tool Kit to DirectX 12. This not only makes DirectX 12 more accessible but highlights the fact that Windows graphics in general has become less accessible.

If you are a serious professional games programmer then you have to master DirectX 12. Most of the rest of the Microsoft graphics "dabblers" have had to stay with DirectX 11. The biggest blow was the lost of XNA which provided graphics for the rest of us and the halting of development of 3D graphics within WPF which provided graphics where graphics weren't the main objective.

Why were these facilities discontinued and not open sourced?

The simple answer is that it all happened in the megalomaniac years of Steven Synofski's push to Windows 8 and the need to kill anything that wasn't WinRT/Metro oriented.

There is an unofficial version of Windows XNA called MonoGame, but it only supports DirectX 11 and this seems to be the case with most approaches to graphics on Windows. If you want DirectX 12 then you have little choice but to get to grips with its very ugly API.

Even the official Microsoft Tool Kit introduced four years ago has only recently been upgraded to DirectX 12. The original Tool Kit did make it easier for programmers looking to just use some graphics in a project and it replaced the D3DX library and the DirectX SDK itself.

The new DirectX 12 version is, to quote the blog entry launching it,

".. the Direct3D 12 API is significantly different than Direct3D 11 so the graphics components ‘feel’ the same but in practice are used very differently."

This suggests that you can expect a steep learning curve. Indeed a litle later we have:

"A word of caution: DirectX 12 is an API designed for graphics experts. If you are not already an expert in using Direct3D 11, I’d recommend sticking with the Direct3D 11 API until you find yourself in need of the additional control. Direct3D 12 provides a great deal of control over memory allocation, synchronization, state management which can result in reduced CPU overhead for rendering compared to older versions of Direct3D, but that control means the API is quite unforgiving. If you are new to Direct3D entirely, definitely start with Direct3D 11 first."

If you know Direct3D 11 and have tried to get into DirectX 12 then you will know this for a fact and it is nice of Microsoft to warn us - but I can't think of a similar warning being applied to the latest version of an API.

What this is saying is that if you just want some 3D graphics don't use the latest API.

The Tool Kit seems to be a very light wrapper for the raw DirectX 12 with some additional resources - DirectXHelpers, GeometricPrimitives, Effects, SpriteBatch and so on.

In addition you also get the Tool Kit for Audio, GamePad, Keyboard, Mouse and SimpleMath. This targets Windows 10 and makes use of XAudio 2.9 and WIC2.

Of course, you can only make use of all of this if you program in C++. If you want to use C# then look elsewhere.

We tend to notice and make a fuss about the big changes as Microsoft moves Windows 10 further and further away from the original technologies towards something that it hopes will be more mobile and touch compatible.

We tend not to notice the huge amount of technology that is just buried under the fall out - DirectSound, DirectVideo and so on.

Things move on, but Microsoft is still very reluctant to explain what the future of these technologies is on Windows proper and this leaves many a programmer wondering what is safe to use for Win32/.NET desktop apps.

Clearly if you are a focused graphics programmer, the "graphics expert" mentioned in the blog, then spend your life learning DirectX 12 and you will probably be very happy. For the rest of us 3D graphics on Windows has become a difficult topic in more ways than one.

This year's BBVA Foundation Frontiers of Knowledge Award in Information and Communication Technologies has gone to Ivan Sutherland for "pioneering the move from text-based to graphical computer d [ ... ]

Jetpack is a collection of libraries that should make Android easier to use. The problem is what to do while they are maturing to a usable state. The good news is that WorkManager is now considered st [ ... ]