DirectX

DirectX
Component of Microsoft Windows
Directxlogo.png
Current DirectX logo
Introduced inWindows 95

Microsoft DirectX is a collection of 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.

WinG & DCI[edit | edit source]

The first true attempt to bring fast video performance to Windows came in the Virtual Flat Framebuffer Driver (also known as VFLATD, or DVA.386 - Direct Video Access), which shipped as part of Video for Windows, enabling the DrawDib functions to circumvent GDI and write decompressed video frames directly into VRAM. While it had some limitations to the size of framebuffer it could support, it did allow for much faster framebuffer access. VfW also supported DISPDIB.DLL, which supported shutting off GDI to allow a program to write directly to the VGA framebuffer (KERNEL.EXE exported a selector for A0000h).

Windows NT 3.5 added the CreateDIBSection API call to GDI, which allowed one to create an HBITMAP backed by a device-independent-bitmap in user-accessible memory (prior to this, the only method to display a DIB using GDI was via API calls such as SetDIBits, which converted a DIB to a DDB, which was a slow process). As such, one could both use GDI calls to draw onto the DIB and draw the DIB onto the screen using speedy functions such as BitBlt. Windows 95 (then known as Chicago) also added this API call, in conjunction with the introduction of the DIB engine. The DIB engine allowed GDI to treat the entire screen as one big GDI bitmap - one big DIB, and many drivers used VFLATD for this, but many drivers also used DCI, or the Display Control Interface, which was an alternative to VFLATD which was also part of the VfW technology wave. DCI lifted many of VFLATD's limitations, and also added support for multiple offscreen surfaces.

WinG was a port of an early version of the Chicago DIB engine to Windows 3.1x, and most of its functions are parallels to GDI calls added in Windows 95 / NT 3.50. Many early Windows 95 games, such as WinDoom, use WinG, but it was soon discontinued in DirectX's favor.

One well-known application using WinG acceleration is Microsoft Bob.

DCI was also discontinued in favor of DirectX, but some small parts of its API were subsumed into DirectX. When a DirectDraw driver is unavailable on a Windows 9x operating system, it can fall back to use DCI if available (and then it will fall back to the DIB engine as a last resort). On Windows 9x, DirectDraw will also use DISPDIB.DLL to draw fullscreen graphics in any VGA-compatible modes (i.e. 320x200x256 Mode 13h or 320x240x256 Mode X).

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.

Versions[edit | edit source]

DirectX 4 was never released. Raymond Chen of Microsoft explained that after DirectX 3 was released, Microsoft began developing versions 4 and 5 in parallel. Version 4 was planned as a short-termed release with minor changes, whereas version 5 would've been a bigger release. Due to the lack of interest from game developers in the DirectX 4 features it was soon canceled, and the large amount of documents that already distinguished the two new versions resulted in Microsoft choosing to not re-use version 4 to describe features intended for version 5.[2]

Gallery[edit | edit source]

References[edit | edit source]