DirectX
Component of Microsoft Windows | |
![]() Current DirectX logo | |
Introduced in | Windows 95 |
---|
Microsoft DirectX is a collection of COM-based APIs for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms.
Originally all API names started with "Direct" in their names (Direct3D, DirectDraw, etc.), thus the name DirectX was coined as a shorthand term for all of these APIs (the X standing in for the particular API names) and soon became the official name of the collection.
OpenGL[edit | edit source]
Starting with Windows NT 3.5, Microsoft integrated support for OpenGL 1.0, SGI’s 3D graphics API that became the standard for 3D graphics on workstations. Support was provided through the OPENGL32.DLL
library, which implemented a software renderer. It also included support for Installable Client Drivers (ICDs), which enables hardware acceleration through the 3D-DDI. While OPENGL32.DLL
still provided a software rasterizer, all of the OpenGL entry points were indirected through a jump table in the PEB, with the entries filled with the ICD entry points if available, and the software rasterizer if not. The mechanism for this was that the entry points were based on the GL rendering context (referred to via an HGLRC
), which was in turn based on a GDI Display Context, meaning that the 2D framebuffer region pointed to by the Display Context would be the target of drawing operations, using a DIB as a back buffer. The Win32 bindings which interacted with the GDI32
system were called WGL, and are comparable to GLX on UNIX systems. With Windows NT 4.0, support for OpenGL 1.1 features was added, and both the NT 3.51 and 4.0 versions were ported to Windows 95, with the Windows NT 4.0 version included in OSR2.
As of Windows 11, the only entry points exported by OPENGL32.DLL
are for OpenGL 1.1, and to obtain additional entry points, one must call wglGetProcAddress
to obtain them from the current ICD.
Due to the minimal support for Direct3D on versions of Windows NT prior to Windows 2000, Microsoft pushed OpenGL as a core part of the Win32 SDK until Windows 2000, when it was fully sidelined by Direct3D. With Windows Vista, Microsoft added an OpenGL 1.4 ICD into the operating system, which implemented OpenGL on top of Direct3D, though display drivers generally continue to offer their own OpenGL ICDs.
Components[edit | edit source]
DirectX is composed of multiple APIs,[1] the most commonly known ones as follows:
- Direct3D (D3D): Real-time 3D rendering API.
- Direct2D: Current 2D graphics API.
- DirectDraw: Deprecated 2D graphics API.
- DirectSound: Deprecated Audio API (replaced by XAudio2 and XACT3).
- DirectX Diagnostics (DxDiag): A tool for diagnosing and generating reports on components related to DirectX, such as audio, video, and input drivers.
- DirectX Media for Audio/Video acceleration (deprecated).
- DirectWrite, a Text rendering API.
- DirectInput, an input API for interfacing with keyboards, mice, joysticks, and game controllers (deprecated).
- DirectPlay, a network API for communication over a local-area or wide-area network (deprecated).
- DirectX Ray Tracing (DXR): Light ray-tracing API.
- DirectShow: The streaming media technology intended to replace Video for Windows, originally known as ActiveMovie (deprecated)
Version History[edit | edit source]
DirectX 1[edit | edit source]
In 1994, Windows had a poor reputation among game developers for being slow and ill-suited to games, due to the multitasking nature of the OS and lack of direct hardware control, so the majority of games run under DOS. Efforts such as WinG had helped matters, but it was still slower than DOS. However, Windows did have advantages; the device-independent nature of the Windows support for graphics, sound, and input devices eased the burden of configuration for the user and of supporting a litany of different devices for the developer.
As a result, work on what would become DirectDraw began in late 1994 in an effort to provide a fast interface for game graphics display on Windows 95, under the leadership of Alex St. John, Craig Eisler, and Eric Engstrom of the developer relations group, based on an internal memo dubbed "Taking Fun Seriously", criticizing the poor support on Windows for games. Their work was initially based on extending DCI, but soon evolved to include a family of APIs including DirectInput for expanded joystick support, DirectSound for audio, and DirectPlay for multiplayer games communication, collectively code-named the "Manhattan Project", as an allusion to the atomic bombs dropped on Japan, as the developers believed they could unseat Japan's dominance over video games.
A beta version was released in April 1995 at the Game Developers Conference as the Game SDK for Windows 95, with the final version releasing in September 1995, not being included in the original RTM release of Windows 95.
One of the first major games to be released for it was Doom95 in August 1996.
DirectX 2[edit | edit source]
Microsoft bought the company RenderMorphics, which was developing a 3D API known as Reality Lab, in February 1995, to develop a 3D API for Windows 95, which was initially not going to support the OpenGL API. Reality Lab was adapted into Direct3D, which initially included both a retained-mode and immediate-mode API, and rendered to a DirectDraw surface.
Released in Q2 1996, version 2.0a shipped with Windows NT 4.0 and Windows 95 OSR2.
DirectX 3[edit | edit source]
Released in Q3 1996, version 3.0a shipped with Windows NT 4.0 SP3 and was the last update for Windows NT 4.0. Direct3D Retained Mode was deprecated after this release.
DirectX 5[edit | edit source]
DirectX 4 was planned as a short-term release with minor changes, but was cancelled due to a lack of interest from game developers, so its features were folded into DirectX 5[2], which shipped in Q3 1997. Version 5.2 shipped with Windows 98, and a version of DirectX 5 from Windows 2000 build 1671 can be installed on Windows NT 4.0.
DirectX 6[edit | edit source]
Released in Q3 1998, version 6.1a shipped with Windows 98 SE.
DirectX 7[edit | edit source]
Released in Q4 1999, DirectX 7.0 shipped with Windows 2000 and introduced support for hardware T&L. Version 7.1 shipped with Windows Me, and was the last release to support 486 processors or have built-in RGB software rendering.
DirectX 8[edit | edit source]
Released in Q4 2000, DirectX 8 is the first release to support the programmable shader pipeline on GPUs. Version 8.0a shipped with the August 2001 update for Windows 95 OSR2.5 and DirectX 8.1 is the last version to support Windows 95 or have software-rendering support in DxDiag. It also shipped with the RTM versions of Windows XP and Windows Server 2003, and a modified version was used on the original Xbox. DirectX 8 is the first version to drop support for DirectDraw, and Direct3D rendering now occurs to Direct3D surfaces, which supersede DirectDraw surfaces.
DirectX 9[edit | edit source]
DirectX 9 released in Q4 2002, and is the last version for all versions of Windows prior to Windows Vista and Windows Server 2008, with the December 2006 revision removing support for Windows 98/Me. Version 9.0b shipped with the February 2004 Windows Security Update CD for Windows 98 build 1998A, Windows 98 SE build 2222B, and Windows Me build 3000A, while version 9.0c shipped with Windows XP SP2 and Windows Server 2003 SP1. A modified version of Direct3D 9 is also used on the Xbox 360.
During the development of Windows Vista, an extended version of Direct3D 9 was developed to take advantage of the WDDM, known initially as Windows Graphics Foundation 1.0, then Direct3D 9.0L, and finally Direct3D 9Ex. It facilitated multitasking, allowing the Desktop Window Manager to run concurrently with other 3D applications, and is used by the MIL compositor on Windows Vista and above to render the desktop.
DirectX 10[edit | edit source]
DirectX 10, originally known as Windows Graphics Foundation 2.0, was introduced alongside Windows Vista in November 2006, first being unveiled at WinHEC in April 2005. Direct3D 10 was the first version to abandon the legacy fixed-function pipeline in favor of a modern shader-based approach. DirectX 10.1 was released alongside Windows Vista Service Pack 1 and Windows Server 2008 in February 2008.
DirectX 11[edit | edit source]
Debuting alongside WDDM 1.1 in Windows 7, DirectX 11 built on top of DirectX 10, supporting even DirectX 9 cards via feature levels, which support different features based on the capabilities of a GPU. DirectX 11.0 also added the Direct2D and DirectWrite APIs, and was backported to Windows Vista and Windows Server 2008 with the Platform Update, being the last version for Windows Vista and Windows Server 2008. DirectX 11.0 introduced the Windows Advanced Rasterization Platform, or WARP, which is a fully-functional Direct3D 10.1 software rasterizer.
DirectX 11.1 was introduced with Windows 8 and Windows Server 2012, which added DirectCompute and stereoscopic 3D support, being partially backported to Windows 7 and Windows Server 2008 R2 with the Platform Update. DirectX 11.2 was introduced with Windows 8.1 and Windows Server 2012 R2, and a superset thereof, DirectX 11.X was used on the Xbox One, including several features that later became part of DirectX 12. DirectX 11.3 was introduced at GDC 2014 as a higher-level alternative to DirectX 12 and released with Windows 10.
DirectX 12[edit | edit source]
DirectX 12 was first unveiled at the Game Developers Conference in March 2014, being a much lower-level API similar to Vulkan. It launched alongside Windows 10 in July 2015, and since then has acquired incremental updates, including raytracing support and DirectStorage in the interim. DirectX 12 was partially backported to Windows 7 in 2019. DX12 Ultimate followed in 2020, and shipped with Windows 11.
Gallery[edit | edit source]
Diagnostic Tool in Windows XP
Diagnostic Tool in Windows 7