Component Tales: DirectX
[The following article is authored by one of the Windows Embedded MVPs (Most Valuable Professionals). Our MVPs have a heavy background in Embedded systems and are a great repository of information on Windows Embedded products. We’re providing this space on our team blog as a service to our readers by allowing MVPs to share some of their knowledge with the rest of the community.]
In any Windows embedded project that has requirements regarding advanced graphics or multimedia you will not be able to avoid the term DirectX. DirectX is the multimedia API in Windows operating systems and can even be found (as a subset) on Windows CE. It is based on the COM standard and therefore can be used from native as well as managed code via Interop.
Early stages
The first versions of DirectX were released in the mid 90’s and were mainly considered a gaming API. At that time MS-DOS based games ruled the gaming world, because of the direct memory access and speed available on this platform. For game developers newer multitasking OS’s such as Windows 95 at that time provided quite a challenge and Microsoft started to offer a set of APIs to make writing games on Windows easier. Over time this gaming API has evolved not only into a game platform, which is used e.g. on the XBox 360 gaming console, but into a multimedia framework that covers a remarkable spectrum.
In Windows Embedded Standard the complete collection of APIs can be found at Software\System\Multimedia&Graphics\Infrastructure\DirectX in the component catalog.
To ensure that all the DirectX components are added to a configuration, a recommended approach is to use the DirectX macro component (below) to include this technology in an Embedded Standard image. The footprint hit for a complete installation is about 70MB, but if one knows the requirements of the game or application well, the dev can include only those DirectX components needed to support the application.
Developing DirectX applications
Gaming and Multimedia are some of the main application fields for Windows Embedded Standard devices and so it makes a lot of sense to have a closer look at developing with this powerful set of APIs. The best place to start is the DirectX Developer Center on MSDN, which provides a good entry point into the fabulous world of advanced graphics on Windows.
A new was released just this spring. Developers that need to dive even deeper should have a look at the Microsoft XNA developer center, which provides essential resources and even an IDE focusing on game development.
DirectX on Embedded Standard
But, there is one thing to be aware of, despite all the excitement. In Windows Embedded Standard the latest and last available version is DirectX 9.0c. The most recent version, DirectX 10, is supported only by Windows Vista, Server 2008 and higher. This means that some of the new, cutting edge functionalities are not available on Embedded Standard, yet. But, no need to worry! Embedded developers are not left behind, because they will be able to catch up as soon as the next version of Windows Embedded Standard (aka Quebec), which is based on Windows 7, is released.
DirectX version troubleshooting
DirectX applications can be very picky about the version of DirectX included in an XP embedded or Windows Embedded Standard image. Therefore, it is good to know which DirectX version the application has been developed against. If running a wrong or older version quite a few applications show a variety of performance issues, strange graphical artifacts, or even effuse to start up.
To find out if the correct binaries are available in an image the DirectX Diagnostics Utility should be included in the configuration, as well.
DXDiag.exe provides a lot of useful information, and can be used to find an error or to check the prerequisites of an application.
When thinking about test and troubleshooting tools, the download of the DirectX SDK contains further system tools, to support advanced usage scenarios.
Graphic card drivers
If there are problems with a multimedia application, the cause may not be solely related to DirectX. Quite often, it is helpful to check with the vendor which version of a graphic card driver behaves well with the DirectX version in the image.
If one gets all the numbers and files matching up, there is nothing that will spoil a splendid embedded multimedia experience!
Alexander Wechsler
Wechsler Consulting
Technorati Tags: XPe,Standard 2009,DirectX