Skip to content
— CH. 1 · INTRODUCTION —

Direct3D

~7 min read · Ch. 1 of 8
8 sections
  • Direct3D is the graphics programming interface that sits between Windows software and the raw power of a graphics card. For most of computing history, getting a program to draw a triangle on screen meant writing different code for every brand of hardware. Direct3D changed that bargain. It promised a single interface that could talk to any graphics card, offloading the heavy lifting of three-dimensional rendering to dedicated silicon.

    Three questions follow from that promise. How did a small startup's medical imaging tool end up as the backbone of PC gaming? Why did game developers nearly reject it in favor of a rival API before it was even finished? And how does a piece of software that began as a thin translation layer eventually grow to manage everything from pixel shading to raytracing, from desktop PCs to Xbox consoles? The answers run through more than three decades of graphics hardware history and a few pivotal decisions that could easily have gone the other way.

  • In 1992, Servan Keondjian, Doug Rabson, and Kate Seekings founded a company called RenderMorphics. Their product, a 3D graphics API named Reality Lab, was built for medical imaging and CAD software, not for games. Microsoft bought RenderMorphics in February 1995, bringing the entire staff on board to build a 3D graphics engine for Windows 95.

    The first version of Direct3D shipped with DirectX 2.0 on the 2nd of June, 1996, and then again with DirectX 3.0 on the 26th of September, 1996. Those early releases carried forward the architecture RenderMorphics had already built. Direct3D offered both an "immediate mode" low-level API and a "retained mode" scene graph API, both derived from Reality Lab's second release.

    The retained mode turned out to be a poor fit for game developers. Only two games that sold a significant volume, Lego Island and Lego Rock Raiders, were ever built on it. Game developers wanted direct control over hardware; the retained mode stood in the way. Microsoft dropped further retained mode updates after DirectX 3.0.

  • Direct3D's early immediate mode used a programming model called the execute buffer. Microsoft hoped hardware vendors would process these buffers directly, allocating them in video memory and letting the GPU parse and execute them without CPU involvement. The idea was forward-looking, but the reality was that execute buffers were considered extremely awkward to program.

    The friction was serious enough that developers called on Microsoft to abandon Direct3D entirely and adopt OpenGL as the official 3D API for games, as it already was for workstation applications. Microsoft declined. Rather than switch to OpenGL, the team chose to keep improving their own API, partly to compete with OpenGL and partly to take on proprietary alternatives like 3dfx's Glide.

    The answer came in December 1996, when a team in Redmond took over the immediate mode while the original London-based RenderMorphics team continued work on retained mode. The Redmond team introduced the DrawPrimitive API, which eliminated the need for execute buffers entirely and made Direct3D feel much more like Glide or OpenGL to write. The first beta of DrawPrimitive shipped in February 1997, and the finished version arrived with DirectX 5.0 in August 1997.

  • DirectX 6.0, released in August 1998, added multitexturing, stencil buffers, and optimized geometry pipelines for x87, SSE, and 3DNow! instructions. It also introduced a licensing arrangement where Microsoft included vendor-specific hardware features in the API in exchange for an early market advantage for the contributing vendor. S3 texture compression entered the API this way, renamed DXTC for the purpose. A bump mapping technique from TriTech came in through the same route.

    DirectX 7.0 arrived in September 1999 and introduced the .dds texture format along with hardware transform and lighting acceleration, a capability first available on PC hardware with Nvidia's GeForce 256. Hardware vertex buffers represented, by the source's account, the first substantive improvement over OpenGL in DirectX history. Even so, the fixed-function multitexture pipeline had grown so complicated to program that the team recognized a new model was needed.

    DirectX 8.0, released in November 2000, provided it. Programmable vertex and pixel shaders let developers write code that ran directly on the GPU without worrying about the underlying hardware state. It was the first major departure from the OpenGL-style fixed-function model, where drawing is controlled by a complicated state machine. DirectX 8.0 also absorbed the last remaining DirectDraw API calls, making Direct3D the single rendering API across the platform.

  • Direct3D 9.0 arrived in December 2002, adding the High Level Shader Language for floating-point texture formats, Multiple Render Targets, and texture lookups inside vertex shaders. It became one of the longest-lived versions in the API's history, remaining the baseline for games well into the following decade.

    The jump to Direct3D 10 was bound to Windows Vista and introduced a fundamental shift in how hardware compatibility worked. Earlier versions tracked supported features through "capability bits," a vendor-by-vendor list of what each card could do. Direct3D 10 replaced that with a mandatory minimum standard: if a card called itself Direct3D 10 compatible, it had to support the full feature set, no exceptions. The geometry shader stage was new, allowing geometry to be generated entirely on the GPU rather than handed in from the CPU.

    The timing caused friction. Direct3D 10 hardware was rare when Vista launched, and the massive existing base of older graphics cards meant the first Direct3D 10 games still shipped with Direct3D 9 fallback paths. Games such as Company of Heroes, Hellgate: London, and Crysis all carried both render paths. The DirectX 10 SDK became available in February 2007, and Direct3D 10.1 followed with its runtime shipping alongside Windows Vista SP1 in mid-March 2008. By June 2008, the only Direct3D 10.1 hardware available was ATI's Radeon HD 3000 and HD 4000 series.

  • Direct3D 11 was released as part of Windows 7. Microsoft first presented it at Gamefest on the 22nd of July, 2008, and demonstrated it at the Nvision 08 technical conference on the 26th of August, 2008. AMD previewed working DirectX 11 hardware at Computex on the 3rd of June, 2009.

    The headline addition was tessellation, a technique for subdividing low-detail geometry into finer meshes at runtime, increasing visible polygon counts without requiring artists to store high-polygon assets. But the more lasting engineering change was multithreaded rendering. For the first time, developers could submit rendering work to the same Direct3D device from multiple CPU threads simultaneously, letting multi-core processors drive the GPU more efficiently.

  • Direct3D 12 lowered the abstraction layer further than any previous version. Its lead developer Max McMullen described the goal as achieving "console-level efficiency" and improved CPU parallelism. The mechanism was a shift in responsibility: instead of the driver managing GPU resources on the application's behalf, developers now controlled memory allocation, resource binding, and command submission directly.

    In Direct3D 11, commands traveled from CPU to GPU one by one in sequence, bottlenecked by the speed at which the CPU could issue them. Direct3D 12 replaced that model with command lists, self-contained packages of work that the GPU could consume without waiting on additional CPU input. Bundles within those lists could be reused across frames, reducing redundant work. Descriptor heaps and tables let developers pre-allocate frequently used resources for fast GPU access.

    DirectX Raytracing arrived with Windows 10 version 1809, the October 2018 Update. Shader Model 6.0 shipped with the Windows 10 Creators Update in April 2017, and DirectX 12 Ultimate, which bundled raytracing, mesh shaders, variable-rate shading, and sampler feedback into a single tier called 12_2, came with Windows 10 version 2004 in 2020. Microsoft also released experimental Direct3D 12 support for Windows 7 SP1 in 2019, delivered as a NuGet package.

  • Direct3D was designed for Windows, but a parallel ecosystem grew to run it elsewhere. DXVK is an open-source Vulkan-based translation layer for Direct3D 8 through 11 that enables Windows games to run on Linux via Wine. Valve's Proton project, which powers game compatibility on the Steam Deck, uses DXVK as a core component.

    Several DXVK forks addressed earlier API versions: D7VK covered Direct3D 3, 5, 6, and 7, while D8VK added Direct3D 8 support before being merged into the main DXVK project with version 2.4, released on the 10th of July, 2024. D9VK brought Direct3D 9 support and was folded into DXVK on the 16th of December, 2019. For Direct3D 9 specifically, Gallium Nine offers a different approach, running Direct3D 9 applications on Linux without any translation layer at all, aiming for near-native performance.

    For Direct3D 12, the vkd3d library translates calls to Vulkan and is included in Valve's Proton. The Wine project also maintains WineD3D, which translates Direct3D to OpenGL and can run on Windows itself under certain conditions. Taken together, this ecosystem means that a game written against Direct3D's various versions can run on hardware and operating systems its designers never anticipated.

Common questions

What is Direct3D and what is it used for?

Direct3D is a graphics API for Microsoft Windows, part of the DirectX family. It is used to render three-dimensional graphics in performance-sensitive applications such as games, and it uses hardware acceleration when a compatible graphics card is present.

Who created Direct3D and when was it first released?

Direct3D grew out of a 3D graphics API called Reality Lab, developed by Servan Keondjian, Doug Rabson, and Kate Seekings at a company named RenderMorphics. Microsoft acquired RenderMorphics in February 1995, and the first version of Direct3D shipped with DirectX 2.0 on the 2nd of June, 1996.

What was the main competition to Direct3D in the 1990s?

Direct3D's main competitors were OpenGL, developed by SGI and now maintained by the Khronos Group, and 3dfx's Glide API. Microsoft and SGI attempted to merge Direct3D and OpenGL under a project called Fahrenheit in the 1990s, but that effort was eventually cancelled.

What major change did Direct3D 8.0 introduce?

Direct3D 8.0, released in November 2000, introduced programmable vertex and pixel shaders, allowing developers to write custom GPU code instead of relying on a fixed-function rendering pipeline. It also absorbed DirectDraw, making Direct3D the single rendering API for both 2D and 3D on Windows.

What is the difference between Direct3D feature levels and API versions?

Feature levels define minimum sets of hardware capabilities a graphics card must support, using underscores as delimiters (for example, 11_0). API versions refer to the runtime and its features, using dot notation (for example, Direct3D 11.4). Feature levels allow a single API version to run across a range of hardware generations.

Can Direct3D games run on Linux?

Yes. DXVK is an open-source Vulkan-based translation layer for Direct3D 8 through 11 that allows Windows games to run on Linux via Wine; it is used by Valve's Proton project. Direct3D 12 support on Linux is provided by the vkd3d library, also included in Proton.

All sources

188 references cited across the entry

  1. 1webConfiguring Depth-Stencil FunctionalityMicrosoft — August 19, 2020
  2. 2webRenderStateManager.UseWBufferMicrosoft — November 6, 2009
  3. 3webTexture Blending (Direct3D 9)Microsoft — January 6, 2021
  4. 4webGeometry Blending (Direct3D 9)Microsoft — January 6, 2021
  5. 5webHLSLMicrosoft — August 4, 2021
  6. 6webEffects (Direct3D 11)Microsoft — June 11, 2021
  7. 12webVertex Shaders and Pixel ShadersDom Penfold — 16 January 2002
  8. 15webQube Soft Management Teamqubesoft.com — 2017-04-04
  9. 16webJoining the Multimedia PartyJeff Prosise — May 16, 1995
  10. 17webBuilding a Scene Using Retained Mode Direct3DNigel Thompson — August 1996
  11. 18webDirectXOtto Berkes — April 12, 2015
  12. 19webWhat happened to DirectX 4?Raymond Chen — Microsoft — 2004-01-22
  13. 20webPress Release-Microsoft Meltdown (February 1997)Microsoft Corporation — 1997-02-18
  14. 21webPress Release-Microsoft Meltdown (July 1997)Microsoft Corporation — 1997-07-22
  15. 22webGet Fast and Simple 3D Rendering with DrawPrimitive and DirectX 5.0Ron Fosner — Microsoft Systems Journal
  16. 25webMicrosoft Ships DirectX 6.1Microsoft — 3 February 1999
  17. 26webBill Gates April 1997 Talisman UpdateMicrosoft — 1997-05-05
  18. 27webDDS (DirectDraw Surface format)MSDN — August 19, 2020
  19. 28newsDirectX 7: due July 99March 1999
  20. 29webMicrosoft Announces Release of DirectX 8.0Microsoft — 9 November 2000
  21. 31webDirectX 8 Graphics and Video: A Fresh Startgamedev.net — 2000-11-30
  22. 39webGraphics APIs in WindowsMSDN — August 2009
  23. 42webDirect3D Retained Mode removed from Windows VistaMicrosoft Support — March 17, 2009
  24. 43webDirectX Software Development KitMicrosoft — 2007-02-02
  25. 47webCommon-Shader CoreMicrosoft — June 30, 2021
  26. 48webGeometry Shader FeaturesMicrosoft — August 23, 2019
  27. 49webShader StagesMicrosoft — October 11, 2016
  28. 53webDirect3D 10.1 FeaturesMSDN — January 6, 2021
  29. 61webAMD shows off world's first DirectX 11 GPUEngadget — 2009-06-03
  30. 62webDirect3D Feature LevelsChuck Walbourn — June 20, 2012
  31. 72webDepth BiasMSDN
  32. 75webTessellation OverviewMicrosoft — September 16, 2020
  33. 89webDirectX 11.1 and Windows 7November 13, 2012
  34. 94webWhat's New in Direct3D 11.2Bennett Sorbo — June 26, 2013
  35. 95webDXGI 1.3 ImprovementsJune 26, 2013
  36. 99webMassive Virtual Textures for Games: Direct3D Tiled ResourcesCharles Hollemeersch, Matt Sandy — June 26, 2013
  37. 100webDirect3D 11.2 FeaturesJune 26, 2013
  38. 101webMSDN BlogsMSDN
  39. 103webRaising the Bar with Direct3DOctober 14, 2013
  40. 108webThe NVIDIA GeForce GTX 980 Review: Maxwell Mark 2Ryan Smith — 18 September 2014
  41. 111webDirect3D 11.3 Features28 March 2015
  42. 119webShader Model 5.1 - Win32 appsNovember 20, 2019
  43. 125webRoot Signatures Overview - Win32 appsstevewhims — 2023-02-06
  44. 138webInput-Assembler StageNovember 4, 2020
  45. 140webTessellation StagesSeptember 16, 2020
  46. 141webGeometry Shader StageMay 24, 2021
  47. 142webStream-Output StageNovember 4, 2020
  48. 143webRenderStatesNovember 6, 2009
  49. 144webRasterizer StageNovember 4, 2020
  50. 145webPixel Shader StageAugust 19, 2020
  51. 146webOutput-Merger StageMay 24, 2021
  52. 150webHardware Tiers - Win32 appsDecember 30, 2021
  53. 151webD3D12_FEATURE - Win32 appsFebruary 14, 2023
  54. 155webShows
  55. 161citationWinterSnowfall/d7vkWinterSnowfall — 2026-03-13
  56. 162webD7VK Aims To Deliver Direct3D 7 Atop VulkanMichael Larabel — 2025-11-07
  57. 170webUbuntu 18.10 Adds Gallium Nine Support, Latest Mesa 18.2.2Joey Sneddon — October 10, 2018
  58. 171citationWineHQ - vkd3dDirect3D 12 — 2019-04-03
  59. 175webWineD3DOnWindows – The Official Wine WikiWiki.winehq.org — 2013-06-02
  60. 178webEffect-Compiler ToolMicrosoft — August 19, 2020
  61. 184webUVAtrlas
  62. 188webFurther RenderingNicole Claro — April 1995
  63. 190webDirectMLMicrosoft Docs