Tag: directx

Hidden Tech Features in Windows 8

Nov 12, 2012 by in Microsoft Surface, Multi-touch, Technology, Touchscreen


With Microsoft’s Build 2012 over and Surface now available for purchase, it seems like the only thing Microsoft developers can talk about is building Windows 8 store apps. Creating Windows apps that can be monetized using the same wildly successful revenue sharing model that Apple pioneered is compelling. However, in the rush to cash in on this new frontier it’s easy for developers to lose sight of the fact that Windows 8 is far more than the addition of a new shell and a new application model.

As a product, Windows has been continuously developed for over fifteen years (which is far longer than Apple has been using the revenue sharing monetization model), but this time Microsoft has built some great technologies that have received far less attention.

The first that comes to mind is DirectX. When most developers think of DirectX they typically think of 3D applications and games, and while DirectX is a great platform for building 3D applications and games, it is capable of doing much more. In Windows 7, Microsoft added Direct2D to the DirectX family of technologies, and as you would expect Direct2D finally adds the ability to execute drawing commands against a 2D surface. In many ways Direct2D is being setup to take the place of GDI, and because it is built on top of Direct3D and DXGI it is also hardware-accelerated and runs on the GPU. Microsoft has also added DirectWrite, which now provides developers a way to layout and render high quality text while making full use of the GPU. Before DirectWrite developers either had to use GDI or rig their own system to render text; now with DirectWrite, developers have access to a rich API that supports layout, international text, and sub-pixel anti-aliasing that integrated easily into the rest of their application whether they are using GDI or DirectX.

Even though DirectX is an amazing API and has only grown in capabilities over the years, there are still numerous applications that don’t use DirectX. Most of these applications use GDI (a much older technology ) to paint to the screen, and yet other applications use other rendering libraries like WPF. It used to be the case that once a developer chooses a core rendering technology to build an app, it was impractical to leverage any other rendering technology. Fortunately Microsoft has built a new technology into Windows 8 called Direct Composition that does away with this limitation. At its core, Direct Composition is simply a bitmap compositing engine. By using Direct Composition it is now possible to use WPF to build the bulk of your application, and to sprinkle in some DirectX code to give your app that extra sparkle that would otherwise be too difficult or which would run too slowly if attempted using WPF. Additionally, because Direct Composition is baked deep into Windows 8 it is possible to compose applications and effects that are generated from code running in separate processes, which opens up a whole new front in software engineering.

Direct Manipulation

While certainly not the last hidden technology in Windows 8, the last I’ll cover is Direct Manipulation. Most developers are extremely comfortable in the world of mouse driven user interfaces—we all understand the concepts of click, hover, right click, move, etc. But the world of touch driven user interfaces is largely uncharted by many developers and most will find that it is far more complicated and difficult than the mouse driven world. In a touch user interface, there may be one, two, five, or no touches on the screen. The user may be pinching to zoom or he or she may just want to move an object but by using two fingers instead of one. Of course it would be possible for developers to build state machines that were able to process and interpret these user gestures and to continue to build their touch based application, but it turns out that building these state machines is not an easy task. Fortunately Microsoft has done the hard work and has included the Direct Manipulation technology in Windows 8. Direct Manipulation is essentially just a touch input state machine that frees developers from the details of interpreting user input. Instead, by using Direct Manipulation, developers can be notified when a user is engaging in a common gesture like pinching, sliding, or rotating. In fact much of the Direct Manipulation API is the same as what you would find in WPF or in WinRT Xaml, and it is my guess that the WinRT Xaml stack is actually built on top of Direct Manipulation.

There are of course many other  new technologies that Microsoft has created for Windows 8 and still more existing technologies that Microsoft has improved. The Windows Store app model opens up entirely new markets for Microsoft developers, but let’s not forget that Windows 8 is still a great platform for building desktop apps.