Welcome to the DirectX blog! Today Windows supports a number of APIs such as GDI, GDI+, D3D etc. that often provide overlapping graphics functionality. When we started working on Windows 7, one of our goals was to rationalize our graphics APIs and at the same time update them with the features that application developers wanted. We wanted these APIs to be modular and composable with existing graphics APIs. To this end, we put together a team to be responsible for graphics in Windows. In this blog you will get to hear directly and interact with the engineers in this team.  

 

“DirectX” originated as a brand name for Windows technologies aimed at simplifying the game development experience. DirectX bypassed the abstractions put in place for standard application development and provided the developer direct access to graphics, audio, and input hardware. This unified set of technologies provided game developers a single SDK for all their development needs. Over time, these technologies moved to be unified across many platforms provided by Microsoft, specifically the Xbox 360 and Windows. These technologies, specifically DirectInput and DirectSound, moved away from the DirectX brand and associated with the XNA brand, changing their names to XInput and XAudio. Only one technology kept the DirectX branding: Direct3D. In fact, DirectX has become synonymous with Direct3D to the extent that the PC ecosystem (Graphics IHVs, PC OEMs, Game Developers and Enthusiast end users) uses “DirectX” as a way to refer to the graphics capabilities of their machine.

 

On a parallel front, Windows maintained an extensive set of graphics technologies to meet the needs of application developers and the UI for the operating system. Graphics is composed of 2D, 3D, text rendering, imaging, and device management. These tasks were managed primarily though the Graphics Device Interface, or GDI. GDI managed 2D rendering, hardware-accelerated displays and display surface management, imaging, and text rendering. In Windows 2000 we also introduced a new set of APIs for similar functionality, but upgraded capabilities, called GDI+ which was not hardware accelerated.

Technology

Existing APIs

2D

GDI/GDI+

3D

D3D3…D3D10

Text

GDI/GDI+

Device Management

GDI

Imaging

GDI/GDI+/WIC

 

Thanks to the success of gaming, cheap and capable graphics was available in every PC and even every Smartphone. In the meantime, there developed a need for compelling and rich UI that enabled end users to interact with their PCs using intuitive ways such as with touch and to be able to visualize the profusion of digital content on their PCs in a rich way. The UI designers’ ideas to solve these problems involved taking advantage of the graphics HW to provide high quality visuals animated smoothly in the UI as highlighted in the UI of PC Operating Systems such as Vista. Very soon ISVs wanted to achieve the same level of visual fidelity and smooth animation that the OS provided for their applications’ UI.

 

Unfortunately the existing APIs were either lacking in modern features (e.g. Lack of Alpha and Anti-aliasing in GDI) or slow (e.g. GDI+) for such usage. Many ISVs also do not have the luxury to rewrite their applications in their entirety to take advantage of existing hardware accelerated APIs like Windows Presentation Foundation (WPF). Hence there was a need to come up with a set of graphics APIs that have the requisite performance and fidelity by using the graphics hardware and that can be used independently and interoperate with existing code-bases. Therefore, we updated some of the more recent APIs such as the Direct3D 10 API and introduced new ones such as Direct2D and DirectWrite. This updated set of graphics APIs are currently in development for Windows 7. With these new technologies, Windows will have a clean, interoperable, hardware-accelerated graphics stack for use with any application. The table below shows how the graphics functionality maps to the existing APIs and the APIs that we recommend using for Windows 7. In general, the new APIs can be substituted for the existing APIs that provide similar functionality, but there will still be cases where identical functionality does not exist in the new APIs, especially in the case of Device Management where GDI continues to be the main API for this functionality. Over time, as we receive feedback from application developers, will work to address all short comings of the new APIs.

Technology

Existing APIs

Windows 7 Component

2D

GDI/GDI+

Direct2D

3D

D3D3…D3D10

Direct3D10.1

Text

GDI/GDI+

DirectWrite

Device Management

GDI

 DXGI 1.1 & GDI

Imaging

GDI/GDI+/WIC 1.0

Updated WIC

 

We previewed these technologies at PDC in November 2008. You can see the presentations here:

·         Overview of DirectX APIs

·         Direct3D

·         Direct2D and DirectWrite

 

We hope to communicate with all of you who are developing software to run on Windows and need performant graphics whether it is text, 2D, 3D or images and whether it runs on the CPU or the GPU using this blog. Here you will be able to interact with the engineers building the graphics subsystem in Windows and the APIs that expose its capabilities. So, welcome to the DirectX blog once again!