DirectX ist die Grafik- und Multimedia-API von Microsoft, die 1995 mit Windows 95 als DirectX 1.0 debütierte. Herzstück ist Direct3D für 3D-Grafik; daneben gehören Direct2D, DirectWrite, XAudio2 und XInput zur Familie. Der Diagnose-Befehl dxdiag ist das bekannteste Werkzeug.

Diagnose und Kommandozeile

dxdiag            # DirectX-Diagnoseprogramm (Systemreport)
dxdiag /x out.xml # Report als XML exportieren

Direct3D 12 — Low-Level-Zugriff

Direct3D 12 (2015) gibt der Anwendung explizite Kontrolle über GPU-Speicher, Descriptor Heaps und Command Lists — vergleichbar mit Vulkan:

ID3D12Device* device;
D3D12CreateDevice(NULL, D3D_FEATURE_LEVEL_12_0, IID_PPV_ARGS(&device));

ID3D12CommandQueue* queue;
device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&queue));

ID3D12GraphicsCommandList* cmdList;   // Befehle aufzeichnen
cmdList->DrawInstanced(3, 1, 0, 0);   // 3 Vertices zeichnen

HLSL-Shader

Shader werden in HLSL (High-Level Shading Language) geschrieben und mit dxc (seit DirectX 12) oder fxc (ältere SDKs) kompiliert:

dxc -T vs_6_0 -E VSMain vertex.hlsl   # Vertex-Shader für Shader Model 6
dxc -T ps_6_0 -E PSMain pixel.hlsl    # Pixel-Shader

Komponenten

  • Direct3D — 3D-Grafik (Versionen 9, 11, 12)
  • Direct2D / DirectWrite — 2D-Vektorgrafik und Text
  • XAudio2 — Audio; XInput — Gamecontroller
  • DXGI — Framebuffer-Austausch (Swap Chain) und Adapter-Enumeration
  • DirectCompute — GPGPU-Compute-Shader

Verwandte APIs: Vulkan (plattformübergreifendes Low-Level-Pendant), OpenGL (klassische API), Shader über HLSL.