DirectX

bilgipedi.com.tr sitesinden
Logosu
Microsoft DirectX'in eski logosu

DirectX, Microsoft'un video oyunları başta olmak üzere çoklu ortam yazılımlarını rahat, hızlı ve uyumlu şekilde hazırlayabilmek için yarattığı bir uygulama programlama arayüzüdür (API). Şu andaki en güncel resmî sürüm DirectX 12'dir. İçerdiği bileşenlerden bazıları şu şekilde özetlenebilir:

  • Direct3D (veya bir diğer adıyla WGF: Windows Graphics Foundations - Windows Grafik Temelleri) hem iki hem üç boyutlu grafikleri ekrana dökmeye yarar. Piyasadaki çoğu ekran kartının en modern donanım hızlandırma özelliklerini destekler. En büyük rakibi OpenGL'dir
  • DirectSound hem iki hem üç boyutlu ses için kullanılır. Windows altında çalışabilen her ses kartı en azından yazılım ile DirectSound ve DirectSound 3D desteğine sahiptir. Piyasadaki tüm rakipleri göz ardı edebilecek bir popüleriteye sahiptir.
  • DirectInput, klavye, fare ve oyun çubuğu gibi bileşenlerin giriş ve çıkışlarını basit bir şekilde yönetebilmek için olan arabirimdir.
  • DirectPlay ise TCP/IP, modem ve Bluetooth gibi birçok protokol üzerinden bağlantı ve mesajlaşma bileşenlerini içerir. TCP/IP üzerinde NAT veya uPnP geçişlerini desteklemesi ve DirectPlay Voice ile saniyede 1.2 kbit'e kadar inebilen ses sıkıştırma codec'leri ile göz doldurur. Açık kaynak dünyasında en bilinen rakibi HawkNL'dir.

Windows 95 ile birlikte oyun programcılarını DOS'tan Windows'a doğru çekmek için yaratılmış olan bu arabirim, ancak 5.0 sürümünden itibaren beklenen ilgiyi görmeye başlayabilmiştir. Windows 2000'in çıkışıyla birlikte gerçek kip oyunlarının sonu gelmiş olduğundan, Windows altında vazgeçilmez oyun arayüzü haline gelmiştir. XBox'ta da DirectX'in kullanılıyor olması, arabirimin popülaritesini artırmada etkili olmuştur. Buna ek olarak, son zamanlarda DirectX Managed (.NET tabanlı) modülü sayesinde çok hızlı bir şekilde kolayca, karmaşık DirectX uygulamaları yazmak mümkün hale gelmiştir fakat yönetimli DirectX bileşenleri C ve C++ programlama için geliştirilmiş DirectX Kütüphaneleri kadar performans gösteremezler. Yönetimli bileşenlerin kullanılmasıyla geliştirilen programlar, DirectX kütüphanelerinin kullanılmasıyla geliştirilen programlar kadar hızlı olamazlar. Bu nedenle profesyonel video oyun programlamada hâlen DirectX kütüphaneleri kullanılmaktadır.

Sanılanın aksine, Linux altında DirectX bileşenlerinin büyük çoğunluğunun kullanılması Cedega sayesinde mümkündür. Bu yazılım, Direct3D'yi OpenGL, DirectSound'u ise OSS (Open Sound System - Açık Ses Sistemi) kullanarak çalıştırır.

DirectX
Microsoft-DirectX-Logo-wordmark.svg
Geliştirici(ler)Microsoft
İlk sürüm30 Eylül 1995; 27 yıl önce
Kararlı sürüm
12 Ultimate API / 9 Ekim 2021; 19 ay önce
İşletim sistemiMicrosoft Windows, Windows Phone 8, Dreamcast, Xbox, Xbox 360, Xbox One, Xbox Series X ve Series S
TipAPI

Microsoft DirectX, Microsoft platformlarında multimedya, özellikle oyun programlama ve video ile ilgili görevleri yerine getirmeye yönelik bir uygulama programlama arayüzleri (API'ler) koleksiyonudur. Başlangıçta, bu API'lerin isimleri Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound ve benzeri gibi "Direct" ile başlıyordu. DirectX adı, tüm bu API'ler için kısaltılmış bir terim olarak üretildi (X, belirli API adlarını temsil ediyor) ve kısa sürede koleksiyonun adı haline geldi. Microsoft daha sonra bir oyun konsolu geliştirmeye başladığında, konsolun DirectX teknolojisine dayalı olduğunu belirtmek için Xbox adının temeli olarak X kullanıldı. XInput ve Cross-platform Audio Creation Tool (XACT) gibi Xbox için tasarlanan API'lerin adlandırılmasında X başlangıcı devam ettirilirken, DirectX modeli Direct2D ve DirectWrite gibi Windows API'leri için devam ettirilmiştir.

Direct3D (DirectX içindeki 3D grafik API'si) Microsoft Windows ve Xbox konsol serisi için video oyunlarının geliştirilmesinde yaygın olarak kullanılmaktadır. Direct3D ayrıca CAD/CAM mühendisliği gibi görselleştirme ve grafik görevleri için diğer yazılım uygulamaları tarafından da kullanılır. Direct3D, DirectX'in en çok duyurulan bileşeni olduğundan, "DirectX" ve "Direct3D" adlarının birbirinin yerine kullanıldığını görmek yaygındır.

DirectX yazılım geliştirme kiti (SDK), kodlamada kullanılmak üzere eşlik eden belgeler ve başlıklarla birlikte yeniden dağıtılabilir ikili formdaki çalışma zamanı kitaplıklarından oluşur. Başlangıçta, çalışma zamanları yalnızca oyunlar tarafından veya açıkça kullanıcı tarafından yüklenirdi. Windows 95 DirectX ile başlamadı, ancak DirectX Windows 95 OEM Service Release 2'ye dahil edildi. Windows 98 ve Windows NT 4.0, o zamandan beri piyasaya sürülen her Windows sürümünde olduğu gibi DirectX ile birlikte gönderilmiştir. SDK ücretsiz olarak indirilebilir. Çalışma zamanları tescilli, kapalı kaynaklı yazılımlar olsa da, SDK örneklerinin çoğu için kaynak kodu sağlanmıştır. Windows 8 Geliştirici Önizleme sürümünden itibaren DirectX SDK, Windows SDK'ya entegre edilmiştir.

Geliştirme geçmişi

1994 yılının sonlarında Microsoft bir sonraki işletim sistemi olan Windows 95'i piyasaya sürmeye hazırdı. Tüketicilerin bu işletim sistemine vereceği değerde önemli bir faktör, üzerinde çalışabilecek programlardı. Microsoft çalışanı Alex St. John çeşitli oyun geliştiricileriyle görüşerek MS-DOS oyunlarını Windows 95'e getirme olasılıklarının ne kadar olduğunu sordu ve yanıtların çoğunlukla olumsuz olduğunu gördü; programcılar Windows ortamını MS-DOS veya diğer oyun platformlarına kıyasla daha zor geliştirilebilir bulmuşlardı. Uyumluluk konusunda da güçlü korkular vardı; bunun dikkate değer bir örneği Disney'in Animasyonlu Hikaye Kitabı'ydı: WinG programlama arayüzünü temel alan Aslan Kral. Oyunla birlikte gelen WinG arayüzü ile test edilmemiş yeni Compaq bilgisayarlardan gelen çok sayıda uyumsuz grafik sürücüsü nedeniyle, birçok masaüstü sistemde o kadar sık çöktü ki, ebeveynler Disney'in yardım hatlarına akın etti.

John, Windows altında oyun geliştirmeye yönelik dirençlerin bir sınırlama olacağını fark etti ve daha fazla programcının Windows için oyun geliştirmesini sağlayacak daha iyi bir çözüm geliştirmek üzere Craig Eisler ve Eric Engstrom adlı iki mühendisi daha işe aldı. Projenin kod adı Manhattan Projesi'ydi, çünkü İkinci Dünya Savaşı'nda aynı adı taşıyan projeyle bağlantılı olarak Japonlar tarafından geliştirilen video oyun konsollarının yerini Microsoft'un işletim sistemini çalıştıran kişisel bilgisayarların alması amaçlanıyordu. Başlangıçta logo olarak radyasyon sembolü kullanılmıştı ancak Microsoft ekipten logoyu değiştirmesini istedi. Yönetim, Windows'u bir oyun platformu olarak zaten gözden çıkardığı için projeyi kabul etmedi, ancak üçü bu projenin geliştirilmesine karar verdi. Asi yapıları, Microsoft'un ofis ürünlerinden sorumlu kıdemli başkan yardımcısı Brad Silverberg'in üçlüye "Beastie Boys" adını vermesine yol açtı.

Üçlünün çalışmalarının çoğu, 1994 yılının sonlarına doğru başlayan diğer projeler arasında yapıldı. Dört ay içinde ve çeşitli donanım üreticilerinin de katkılarıyla ekip, 1995 Oyun Geliştiricileri Konferansı'nda sundukları ilk uygulama programlama arayüzleri (API'ler) setini geliştirdi. SDK, grafik rutinleri için DirectDraw, ses için DirectSound ve ağ iletişimi için DirectPlay gibi kütüphaneler içeriyordu. Kütüphanenin "Direct" kısmı, bu rutinlerin tipik olarak temel Windows 95 rutinlerini atlaması ve bilgisayar donanımına doğrudan erişmesi nedeniyle adlandırılmıştı. Her ne kadar ekip "Game SDK" (yazılım geliştirme kiti) adını vermiş olsa da, "DirectX" adı çeşitli kütüphanelerin adlandırma şemasıyla alay eden bir gazeteciden geldi. Ekip bu adlandırma şemasını kullanmaya devam etmeyi ve projeyi DirectX olarak adlandırmayı tercih etti.

DirectX'in ilk sürümü Eylül 1995'te Windows Games SDK olarak piyasaya sürüldü. Windows 3.1 için DCI ve WinG API'leri için Win32'nin yerini aldı. DirectX, Windows 95'ten başlayarak Microsoft Windows'un tüm sürümlerinin yüksek performanslı multimedya içermesine olanak sağladı. Eisler blogunda DirectX 1'den 5'e kadar olan sürümleri geliştirme çılgınlığı hakkında yazdı.

Microsoft, daha fazla geliştiricinin DirectX'e katılmasını sağlamak için id Software'den John Carmack'a başvurarak Doom ve Doom 2'yi MS-DOS'tan DirectX'e ücretsiz olarak taşımayı ve id'nin oyunun tüm yayın haklarını elinde tutmasını teklif etti. Carmack kabul etti ve Microsoft'tan Gabe Newell taşıma projesini yönetti. İlk oyun Ağustos 1996'da Doom 95 olarak piyasaya sürüldü ve ilk yayınlanan DirectX oyunu oldu. Microsoft, Bill Gates'in oyunun reklamlarında yer almasıyla oyunu yoğun bir şekilde tanıttı.

DirectX 2.0, 1996 yılının ortalarında Windows 95 OSR2 ve Windows NT 4.0'ın piyasaya sürülmesiyle birlikte Windows'un bir bileşeni haline geldi. Windows 95'in kendisi henüz yeni olduğundan ve çok az oyun piyasaya sürüldüğünden, Microsoft, Windows'ta bir oyun platformu oluşturma becerisine genellikle güvenmeyen geliştiricilere DirectX'in yoğun tanıtımını yaptı. Alex St. John, 1996 Bilgisayar Oyunu Geliştiricileri Konferansı'nda, oyun geliştiricisi Jay Barnson'ın Roma teması olarak tanımladığı, gerçek aslanlar, togalar ve kapalı bir karnavalı andıran bir şey içeren ayrıntılı bir etkinlik düzenledi. Microsoft bu etkinlikte Direct3D ve DirectPlay'i ilk kez tanıttı ve çok oyunculu MechWarrior 2'nin İnternet üzerinden oynanışını gösterdi.

DirectX ekibi, her DirectX sürümünü bir dizi bilgisayar donanımı ve yazılımıyla test etme gibi zorlu bir görevle karşı karşıya kaldı. Her beta ve son sürümde farklı grafik kartları, ses kartları, anakartlar, CPU'lar, giriş aygıtları, oyunlar ve diğer multimedya uygulamaları test edildi. DirectX ekibi ayrıca donanım endüstrisinin yeni donanım tasarımlarının ve sürücü sürümlerinin DirectX ile uyumlu olacağını onaylamasına olanak tanıyan testler oluşturdu ve dağıttı.

DirectX'ten önce Microsoft, Windows NT platformuna OpenGL'i dahil etmişti. O zamanlar OpenGL "üst düzey" donanım gerektiriyordu ve mühendislik ve CAD kullanımlarına odaklanmıştı. Direct3D'nin OpenGL'e Microsoft kontrolünde bir alternatif olması ve başlangıçta oyun kullanımına odaklanması amaçlanmıştı. 3D oyunlar geliştikçe OpenGL, oyunlar gibi etkileşimli multimedya uygulamalarına yönelik programlama teknikleri için daha iyi destek içerecek şekilde geliştirildi ve geliştiricilere uygulamaları için 3D grafik API'si olarak OpenGL ya da Direct3D kullanma seçeneği sundu. Bu noktada platformlar arası OpenGL ve sadece Windows'a özel Direct3D destekçileri arasında bir "savaş" başladı. Bu arada OpenGL, Microsoft'ta DirectX ekibi tarafından destekleniyordu. Bir geliştirici OpenGL 3D grafik API'sini kullanmayı seçerse, DirectX'in diğer API'leri bilgisayar oyunlarında genellikle OpenGL ile birleştirilir çünkü OpenGL, DirectX'in tüm işlevlerini (ses veya joystick desteği gibi) içermez.

Konsola özgü bir sürümde DirectX, Microsoft'un Xbox, Xbox 360 ve Xbox One konsol API'sinin temeli olarak kullanılmıştır. API, orijinal Xbox tarafından kullanılan özel grafik donanımını geliştiren Microsoft ve Nvidia arasında ortaklaşa geliştirilmiştir. Xbox API'si DirectX sürüm 8.1'e benzerdi, ancak diğer konsol teknolojileri gibi güncellenemezdi. Xbox'ın kod adı DirectXbox'tı, ancak bu ticari adı için Xbox olarak kısaltıldı.

2002 yılında Microsoft, piksel ve tepe noktası gölgelendirici sürüm 2.0 ile öncekinden çok daha uzun gölgelendirici programlarının kullanımını destekleyen DirectX 9'u piyasaya sürdü. Microsoft o zamandan beri DirectX paketini güncellemeye devam etti ve Ağustos 2004'te piyasaya sürülen DirectX 9.0c'de Shader Model 3.0'ı tanıttı.

Nisan 2005 itibariyle DirectShow, DirectX'ten çıkarıldı ve bunun yerine Microsoft Platform SDK'ya taşındı.

DirectX'in Microsoft'un Windows Phone 8'inde mevcut olduğu doğrulandı.

Gerçek zamanlı ışın izleme 2018'de DXR olarak duyuruldu. Aynı yıl DirectX Shader Compiler'a HLSL'yi SPIR-V'ye derleme desteği de eklendi.

Logolar

Orijinal logo deforme olmuş bir radyasyon uyarı sembolünü andırıyordu. Tartışmalı bir şekilde, DirectX projesinin orijinal adı, ABD'nin nükleer silah girişimine bir gönderme olan "Manhattan Projesi" idi. Alex St. John, Manhattan Projesi'nin nihai sonucunun (Japonya'nın nükleer bombalanması) çağrışımının kasıtlı olduğunu ve DirectX ile kardeş projesi Xbox'ın (benzer bir logoya sahip) Japon video oyunu üreticilerini video oyunu endüstrisindeki hakimiyetlerinden uzaklaştırmayı amaçladığını iddia etmektedir. Ancak Microsoft bu iddiayı açıkça reddetmekte, bunun yerine logonun sadece sanatsal bir tasarım olduğunu iddia etmektedir.

Bileşenler

DirectX birden fazla API'den oluşur:

  • Direct3D (D3D): Gerçek zamanlı 3D render API'si
  • DXGI: Direct3D 10 ve sonrası için bağdaştırıcıları ve monitörleri numaralandırır ve takas zincirlerini yönetir.
  • Direct2D: 2D grafik API'si
  • DirectWrite: Metin oluşturma API'si
  • DirectCompute: Grafik işlem birimlerinde genel amaçlı hesaplama için API
  • DirectX Diagnostics (DxDiag): Ses, video ve giriş sürücüleri gibi DirectX ile ilgili bileşenleri tanılamaya ve bunlar hakkında raporlar oluşturmaya yarayan bir araç
  • XACT3: Üst düzey ses API'si
  • XAudio2: Düşük seviyeli ses API'si
  • DirectX Raytracing (DXR): Gerçek zamanlı ışın izleme API'si
  • DirectStorage: GPU odaklı dosya I/O API'si
  • DirectML: GPU hızlandırmalı makine öğrenimi ve yapay zeka API'si

Microsoft aşağıdaki bileşenleri kullanımdan kaldırmıştır:

  • DirectX Medya: Şunlardan oluşur:
    • 2D/3D web animasyonu için DirectAnimation, multimedya oynatma ve medya akışı için DirectShow
    • DirectX Medya Nesneleri: Kodlayıcılar, kod çözücüler ve efektler gibi akış nesneleri için destek (Media Foundation Transforms; MFT'ler lehine kullanımdan kaldırılmıştır)
    • Web etkileşimi için DirectX Transform ve daha üst düzey 3D grafikler için Direct3D Retained Mode
    • Ses sinyali işleme için DirectX eklentileri
    • Hızlandırılmış video oynatma için DirectX Video Acceleration (Media Foundation lehine kullanımdan kaldırılmıştır)
  • DirectDraw: 2D grafik API'si (Direct2D lehine kullanımdan kaldırılmıştır)
  • DirectInput: Klavyeler, fareler, oyun çubukları ve oyun denetleyicileri ile arayüz oluşturmak için Input API (Xbox 360 denetleyicileri için XInput veya klavye ve fare girişi için standart WM_INPUT pencere mesajı işleme lehine sürüm 8'den sonra kullanımdan kaldırılmıştır)
  • DirectPlay: Yerel alan veya geniş alan ağı üzerinden iletişim için Ağ API'si (Windows Live ve Xbox Live için Oyunlar lehine sürüm 8'den sonra kullanımdan kaldırılmıştır)
  • DirectSound: Ses API'si (DirectX 8'den beri XAudio2 ve XACT3 lehine kullanımdan kaldırılmıştır)
  • DirectSound3D (DS3D): 3D ses API'si (DirectX 8'den beri XAudio2 ve XACT3 lehine kullanımdan kaldırılmıştır)
  • DirectMusic: DirectMusic Producer'da yazılmış film müziklerini çalmak için bileşenler (DirectX 8'den beri XAudio2 ve XACT3 lehine kullanımdan kaldırılmıştır)

DirectX işlevselliği COM tarzı nesneler ve arayüzler şeklinde sağlanır. Ayrıca, DirectX bileşenlerinin kendileri olmasa da, yönetilen nesneler Direct3D 9'un üzerindeki Managed Direct3D ve XNA grafik kütüphanesi gibi DirectX'in bazı bölümlerinin üzerine inşa edilmiştir.

Microsoft, DirectX için "PIX" adlı hata ayıklama aracını dağıtmaktadır.

Sürümler

DirectX 9

DirectX 9, 2002 yılında Windows 98, Me ve XP için piyasaya sürüldü ve şu anda sonraki tüm sürümler tarafından desteklenmektedir. Microsoft, DirectX 9.0c'de değişiklikler yapmaya devam ederek yukarıda belirtilen işletim sistemlerinden bazıları için desteğin kesilmesine neden olmaktadır. Ocak 2007 itibariyle, Windows 2000 veya XP gereklidir. Bu aynı zamanda Pixel Shader 2.0 ve Vertex Shader 2.0 içeren Shader Model 2.0'ı da tanıttı. Windows XP SP2 ve daha yeni sürümler DirectX 9.0c içerir, ancak Şubat 2005 DirectX 9.0 SDK veya daha yeni sürümlerle derlenen DirectX 9.0c uygulamaları için daha yeni bir DirectX çalışma zamanı yeniden dağıtılabilir yüklemesi gerekebilir.

DirectX 10

Microsoft DirectX 10 logosu kelime işareti

DirectX API için büyük bir güncelleme olan DirectX 10, yalnızca Windows Vista (2006'nın sonlarında piyasaya sürüldü) ve sonraki sürümlerle birlikte gelir ve kullanılabilir. Windows XP gibi Windows'un önceki sürümleri DirectX 10'a özel uygulamaları çalıştıramaz. Bunun yerine, DirectX 10 donanımına sahip bir Windows XP sisteminde çalıştırılan programlar, Windows XP bilgisayarlar için mevcut olan en son DirectX 9.0c kod yoluna başvurur.

DirectX 10 için yapılan değişiklikler oldukça kapsamlıydı. DirectX API'nin birçok eski bölümü en son DirectX SDK'da kullanımdan kaldırılmış ve yalnızca uyumluluk için korunmuştur: DirectInput XInput lehine kullanımdan kaldırılmış, DirectSound Cross-platform Audio Creation Tool sistemi (XACT) lehine kullanımdan kaldırılmış ve Vista ses yığını CPU'daki yazılımda ses oluşturduğu için donanım hızlandırmalı ses desteği de kaldırılmıştır. DirectPlay DPLAY.DLL de kaldırıldı ve dplayx.dll ile değiştirildi; bu DLL'ye dayanan oyunlar onu çoğaltmalı ve dplay.dll olarak yeniden adlandırmalıdır.

Geriye dönük uyumluluğu sağlamak için Windows Vista'daki DirectX, Direct3D'nin çeşitli sürümlerini içerir:

  • Direct3D 9: Windows XP'de olduğu gibi Direct3D 9 davranışını taklit eder. WDDM sürücüleri yüklüyse Vista'nın Windows Display Driver Model'inin ayrıntıları ve avantajları uygulamadan gizlenir. Bu, örneğin Vista'ya yükseltme yapıldıktan sonra yalnızca XP grafik sürücüleri (XDDM) yüklüyse kullanılabilen tek API'dir.
  • Direct3D 9Ex (Windows Vista geliştirilirken dahili olarak 9.0L veya 9.L olarak bilinir): mevcut Direct3D uygulamaları için uyumluluğu korurken WDDM'nin yeni özelliklerine (WDDM sürücüleri yüklüyse) tam erişim sağlar. Windows Aero kullanıcı arayüzü D3D 9Ex'e dayanır.
  • Direct3D 10: Windows Vista'daki yeni sürücü modeli etrafında tasarlanmıştır ve Shader Model 4 de dahil olmak üzere işleme yetenekleri ve esnekliğinde bir dizi iyileştirme içerir.

Direct3D 10.1, Şubat 2008'de piyasaya sürülen Windows Vista Service Pack 1 ile birlikte gelen ve gerekli olan Direct3D 10.0'ın artımlı bir güncellemesidir. Bu sürüm temel olarak grafik satıcıları için birkaç görüntü kalitesi standardı daha belirlerken, geliştiricilere görüntü kalitesi üzerinde daha fazla kontrol sağlamaktadır. Ayrıca küp harita dizileri, MRT başına ayrı karışım modları, piksel gölgelendiriciden kapsama maskesi dışa aktarımı, örnek başına piksel gölgelendirici çalıştırma yeteneği, çoklu örneklenmiş derinlik tamponlarına erişim desteği ekler ve ekran kartının Shader Model 4.1 veya üstünü ve 32 bit kayan nokta işlemlerini desteklemesini gerektirir. Direct3D 10.1, Direct3D 10 donanımını hala tam olarak desteklemektedir, ancak tüm yeni özelliklerden yararlanmak için güncellenmiş donanım gereklidir.

DirectX 11

Microsoft DirectX 11 logosu sözcük işareti

Microsoft DirectX 11'i Seattle'daki Gamefest 08 etkinliğinde tanıttı. Son Platform Güncellemesi Windows Vista için 27 Ekim 2009'da, yani Direct3D 11'in temel standart olarak sunulduğu Windows 7'nin ilk sürümünden bir hafta sonra başlatıldı.

GPGPU desteği (DirectCompute) ve mozaikleme desteğine sahip Direct3D 11 ve video oyunu geliştiricilerinin çok çekirdekli işlemcileri daha iyi kullanan oyunlar geliştirmelerine yardımcı olmak için geliştirilmiş çoklu iş parçacığı desteği de dahil olmak üzere planlanan önemli özellikler. Yeni API'nin çok iş parçacıklı kaynak işleme gibi bölümleri Direct3D 9/10/10.1 sınıfı donanımlarda desteklenebilmektedir. Donanım mozaikleme ve Shader Model 5.0, Direct3D 11'i destekleyen donanım gerektirmektedir. Microsoft o zamandan beri Direct3D 11 Teknik Önizlemesini yayınladı. Direct3D 11, Direct3D 10.1'in katı bir üst kümesidir - 10.1 sürümünün tüm donanım ve API özellikleri korunur ve yeni özellikler yalnızca yeni işlevselliği ortaya çıkarmak için gerekli olduğunda eklenir. Bu, DirectX'in önceki sürümleriyle geriye dönük uyumluluğun korunmasına yardımcı olur.

DirectX 11 için dört güncelleme yayınlandı:

  • DirectX 11.1 Windows 8'e dahil edilmiştir. Daha yüksek performans için WDDM 1.2'yi destekler, Direct2D (şimdi sürüm 1.1'de), Direct3D ve DirectCompute'un geliştirilmiş entegrasyonuna sahiptir ve XNA çerçevesinden DirectXMath, XAudio2 ve XInput kütüphanelerini içerir. Ayrıca oyun ve video için stereoskopik 3D desteğine de sahiptir. DirectX 11.1, Windows 7 platform güncellemesi aracılığıyla Windows 7'ye de kısmen geri aktarılmıştır.
  • DirectX 11.2, Windows 8.1 (RT sürümü dahil) ve Windows Server 2012 R2'de yer almaktadır. Direct2D'ye geometri gerçekleştirmeleri gibi bazı yeni özellikler ekledi. Ayrıca, sahnenin bazı öğelerinin daha düşük çözünürlüklerde işlenmesine ve daha sonra daha yüksek çözünürlükte işlenen diğer parçalarla donanım kaplaması yoluyla birleştirilmesine olanak tanıyan takas zinciri bileşimi de eklendi.
  • DirectX 11.X, Xbox One üzerinde çalışan DirectX 11.2'nin bir üst kümesidir. Aslında daha sonra DirectX 12'nin bir parçası olarak duyurulan çizim paketleri gibi bazı özellikleri içerir.
  • DirectX 11.3, DirectX 12 ile birlikte GDC'de duyurulmuş ve 2015 yılında piyasaya sürülmüştür. DirectX 12'yi daha üst düzey bir alternatif olarak tamamlaması amaçlanmıştır. Windows 10 ile birlikte gelmektedir.

DirectX 1.0 sürümüne bazı destek özellikleri sunulmuştur. 1996 yılında son kullanıcıya sunulmuştur.

DirectX 12

DirectX 12, Microsoft tarafından 20 Mart 2014 tarihinde GDC'de duyurulmuş ve 29 Temmuz 2015 tarihinde Windows 10 ile birlikte resmi olarak piyasaya sürülmüştür.

DirectX'in yeni sürümünde öne çıkan en önemli özellik, Direct3D 12 için sürücü ek yükünü azaltabilecek gelişmiş düşük seviyeli programlama API'lerinin sunulmasıydı. Geliştiriciler artık GPU'ya kendi komut listelerini ve tamponlarını uygulayabiliyor ve paralel hesaplama yoluyla daha verimli kaynak kullanımına olanak tanıyor. Baş geliştirici Max McMullen, Direct3D 12'nin ana hedefinin "telefon, tablet ve PC'de konsol düzeyinde verimlilik" elde etmek olduğunu belirtti. Direct3D 12'nin piyasaya sürülmesi, AMD'nin AMD grafik kartları için Mantle, Apple'ın iOS ve macOS için Metal ve Khronos Group'un platformlar arası Vulkan'ı da dahil olmak üzere düşük genel giderli grafik API'leri için diğer girişimlerle birlikte geliyor.

Çoklu adaptör desteği DirectX 12'de yer alacak ve geliştiricilerin bir sistemdeki birden fazla GPU'yu aynı anda kullanmasına olanak tanıyacak; çoklu GPU desteği daha önce AMD CrossFireX veya NVIDIA SLI gibi satıcı uygulamalarına bağlıydı.

  • Implicit Multiadapter desteği, karelerin benzer işlem gücüne sahip bağlantılı GPU'lar arasında dönüşümlü olarak işlendiği DirectX'in önceki sürümlerine benzer şekilde çalışacaktır.
  • Explicit Multiadapter ise geliştiricilere iki farklı API modeli sunacak. Bağlantılı GPU'lar DirectX'in SLI veya CrossFireX'teki grafik kartlarını tek bir GPU olarak görmesini ve birleşik kaynakları kullanmasını sağlarken; Bağlantısız GPU'lar, özel GPU'yu CPU üzerindeki entegre GPU ile desteklemek veya AMD ve NVIDIA kartlarını birleştirmek gibi farklı satıcıların GPU'larının DirectX tarafından kullanılmasına izin verecektir. Bununla birlikte, ayrıntılı karma çoklu GPU kurulumları çok daha özenli geliştirici desteği gerektirir.

DirectX 12, tüm Fermi ve sonraki Nvidia GPU'larında, AMD'nin GCN tabanlı yongalarında ve Intel'in Haswell ve sonraki işlemcilerinin grafik birimlerinde desteklenmektedir.

SIGGRAPH 2014'te Intel, DirectX 12'nin işleme hızı ve CPU güç tüketiminde DirectX 11'e göre %50-70 daha verimli olduğu iddia edilen, bilgisayar tarafından oluşturulmuş bir asteroit alanını gösteren bir demo yayınladı.

Ashes of the Singularity, DirectX 12 kullanan ilk halka açık oyundur. Ars Technica tarafından Ağustos 2015'te yapılan testler, Nvidia GeForce 980 Ti için DirectX 12 modunda DirectX 11 moduna göre hafif performans gerilemeleri ortaya koyarken, AMD Radeon R9 290x DirectX 12 altında %70'e varan tutarlı performans iyileştirmeleri elde etti ve bazı senaryolarda AMD, DirectX 12 altında daha güçlü Nvidia'dan daha iyi performans gösterdi. Performans farklılıkları, DirectX 12 için zayıf Nvidia sürücü optimizasyonlarından veya hatta DirectX 11 seri yürütme için optimize edilmiş kartın donanım sınırlamalarından kaynaklanıyor olabilir; ancak kesin neden belirsizliğini koruyor.

DirectX 12'nin Xbox'taki performans iyileştirmeleri PC'deki kadar önemli değildir.

Mart 2018'de, desteklenen donanımlarda gerçek zamanlı ışın izleme yapabilen DirectX Raytracing (DXR) duyuruldu ve DXR API, Windows 10 Ekim 2018 güncellemesine eklendi.

2019'da Microsoft, DirectX 12'nin Windows 7'ye geleceğini ancak yalnızca belirli oyun başlıkları için bir eklenti olarak geleceğini duyurdu.

Windows 10 ile gelmiştir. Asıl amacı ek sürücü yükünü azaltmaktır. AMD'nin Mantle teknolojisine benzer. Max McMullen'e göre amaç "konsol düzeyinde verim" sağlamaktır.

DirectX 12 Ultimate

Microsoft, Mart 2020'de DirectX 12 Ultimate'i açıkladı. DirectX 12 Ultimate, hem Windows 10 bilgisayarlarda hem de Xbox Series X ve diğer dokuzuncu nesil Xbox konsollarında ortak bir kütüphanede birleşecek. Ultimate'daki yeni özellikler arasında DirectX Raytracing 1.1, programcılara tasarım seçimlerine bağlı olarak gölgelendirmenin ayrıntı düzeyi üzerinde kontrol sağlayan Değişken Oranlı Gölgelendirme, Mesh Gölgelendiriciler ve Örnekleyici Geri Bildirimi yer alıyor.

Sürüm geçmişi

DirectX sürümleri
Versiyon Çıkış tarihi Notlar
Binbaşı Küçük Sayı
1 1.0 4.02.0095 30 Eylül 1995 Başlangıçta Windows Game SDK olarak piyasaya sürüldü ve Windows 95'ten itibaren WinG'nin yerini aldı
2 2.0 1996 Yalnızca birkaç 3. parti uygulama ile birlikte gönderilmiştir
2.0a 4.03.00.1096 5 Haziran 1996 Windows 95 OSR2 ve Windows NT 4.0
3 3.0 4.04.00.0068 15 Eylül 1996  
4.04.00.0069 1996 DirectX 3.0'ın sonraki paketi Direct3D 4.04.00.0069'u içeriyordu
3.0a 4.04.00.0070 Aralık 1996 Windows NT 4.0 SP3 (ve üzeri)
İkinci 3.0 sürümü ve Windows NT 4.0 için desteklenen son sürüm
3.0b 4.04.00.0070 Aralık 1996 Bu, Windows 95'in Japonca sürümüyle ilgili kozmetik bir sorunu gideren 3.0a'ya yapılan çok küçük bir güncellemeydi
4 4.0 Hiç yayınlanmadı DirectX 4 hiçbir zaman piyasaya sürülmedi. Microsoft'tan Raymond Chen, The Old New Thing adlı kitabında DirectX 3 piyasaya sürüldükten sonra Microsoft'un 4. ve 5. sürümleri aynı anda geliştirmeye başladığını açıkladı. Sürüm 4 küçük özelliklere sahip daha kısa vadeli bir sürüm olacakken, sürüm 5 daha önemli bir sürüm olacaktı. Oyun geliştiricilerinin DirectX 4 için belirtilen özelliklere ilgi göstermemesi, bu sürümün rafa kaldırılmasına neden oldu ve iki yeni sürümü birbirinden ayıran çok sayıda belge, Microsoft'un sürüm 4 için tasarlanan özellikleri tanımlamak için sürüm 5'i yeniden kullanmamayı seçmesiyle sonuçlandı.
5 5.0 4.05.00.0155 (RC55) 4 Ağustos 1997 Windows 2000 için Windows NT 4.0'a yüklenecek bir beta olarak mevcuttur
5.2 4.05.01.1600 (RC00) 5 Mayıs 1998 Windows 95 için DirectX 5.2 sürümü
4.05.01.1998 (RC0) 25 Haziran 1998 Windows 98'e özel
6 6.0 4.06.00.0318 (RC3) 7 Ağustos 1998 Dreamcast ve diğer cihazlarda uygulanan Windows CE
6.1 4.06.02.0436 (RC0) 3 Şubat 1999
6.1a 4.06.03.0518 (RC0) 5 Mayıs 1999 Windows 98 Second Edition özel. Bu, 486 veya daha eski CPU üzerinde çalışan son sürümdür.
7 7.0 4.07.00.0700 (RC1) 22 Eylül 1999
4.07.00.0700 17 Şubat 2000 Windows 2000
7.0a 17 Aralık 1999 Yalnızca Windows 95 ila 98 için yayınlandı
4.07.00.0716 (RC0) 8 Mart 2000
4.07.00.0716 (RC1) 2000
7.1 4.07.01.3000 (RC1) 14 Eylül 2000 Windows Me'ye özel. Yerleşik RGB yazılım işleme desteğine sahip son sürüm
8 8.0 4.08.00.0400 (RC10) 10 Kasım 2000
8.0a 4.08.00.0400 (RC14) 24 Ocak 2001 İkinci 8.0 sürümü, Windows 95 için desteklenen son sürüm ve dxdiag.exe'de yazılım işleme desteğine sahip son sürüm
8.1 4.08.01.0810 25 Ekim 2001 Windows XP, Windows XP SP1, Windows Server 2003 ve Xbox'a özel
4.08.01.0881 (RC7) 8 Kasım 2001 Bu sürüm alt seviye işletim sistemleri içindir (Windows 98, Windows Me ve Windows 2000)
8.1a 4.08.01.0901 (RC?) 2002 Bu sürüm, Direct3D (D3d8.dll) için bir güncelleme içerir.
8.1b 4.08.01.0901 (RC7) 25 Haziran 2002 Bu güncelleme Windows 2000 üzerinde DirectShow için bir düzeltme içerir (Quartz.dll)
8.2 4.08.02.0134 (RC0) 2002 DirectX 8.1b ile aynıdır ancak DirectPlay 8.2'yi içerir
9 9.0 4.09.00.0900 (RC4) 19 Aralık 2002 DirectX 9 için Ekim 2004'te 4.09.00.0904'ten (DX 9.0c için RC0) başlayarak, Ağustos 2007'ye kadar iki ayda bir ve daha sonra üç ayda bir olmak üzere periyodik hibrit 32-bit/64-bit güncellemeleri yayınlandı. Son periyodik güncelleme Haziran 2010'da yayınlandı
9.0a 4.09.00.0901 (RC6) 26 Mart 2003
9.0b 4.09.00.0902 (RC2) 13 Ağustos 2003
9.0c 22 Temmuz 2004 Windows 98 için ilk 9.0c sürümü ve desteklenen son sürüm
4.09.00.0903 Windows XP SP2'ye özel
4.09.00.0904 (RC0) 4 Ağustos 2004
8 Aralık 2006 Windows 98 Second Edition için desteklenen son sürüm
4.09.00.0904 6 Ağustos 2004 / 21 Nisan 2008* Xbox 360, Windows XP SP2, SP3*, Windows Server 2003 SP1 ve Windows Server 2003 R2
27 Ekim 2008 Son 9.0c sürümü ve Windows 2000, Windows Me ve Windows XP için desteklenen son sürüm
10 10 6.00.6000.16386 30 Kasım 2006 Windows Vista'ya özel
10.1 6.00.6001.18000 4 Şubat 2008 Windows Vista SP1, Windows Server 2008
Direct3D 10.1 içerir
6.00.6002.18005 28 Nisan 2009 Windows Vista SP2, Windows Server 2008 SP2
Direct3D 10.1 içerir
11 11 6.01.7600.16385 22 Ekim 2009 Windows 7, Windows Server 2008 R2
6.00.6002.18107 27 Ekim 2009 Windows Vista SP2 ve Windows Server 2008 SP2, Windows Vista ve Windows Server 2008 için Platform Güncellemesi aracılığıyla
6.01.7601.17514 16 Şubat 2011 Windows 7 SP1, Windows Server 2008 R2 SP1
11.1 6.02.9200.16384 1 Ağustos 2012 Windows 7 SP1 (kısmen), Windows 8, Windows RT, Windows Server 2012
11.2 6.03.9600.16384 18 Ekim 2013 Windows 8.1, Windows RT, Windows Server 2012 R2, Xbox One
12 12 10.00.10240.16384 29 Temmuz 2015 Windows 10, Xbox One
10.00.15063.0000 20 Mart 2017 Windows 10, Derinlik Sınırları Testi ve Programlanabilir MSAA eklendi
10.00.17763.0000 20 Kasım 2019 Uygulama geliştiricileri için özel bir kaynak kodu paketi aracılığıyla yalnızca Windows 7 SP1 için Direct3D 12
10.00.17763.0001 2 Ekim 2018 Windows 10, DirectX Raytracing desteği eklendi
10.00.18362.0116 19 Mayıs 2019 Windows 10, Değişken Oranlı Gölgelendirme (VRS) desteği eklendi
10.00.19041.0928 10 Kasım 2020 Windows 10, Xbox Series X, Ultimate
10.00.22000.1000 5 Ekim 2021 Windows 11, Linux için Windows Alt Sistemine yerel yenileme hızı geçişi ve gelişmiş grafik özellikleri eklendi

Microsoft'un DxDiag aracı (sürüm 4.09.0000.0900 ve üstü) tarafından bildirilen sürüm numarası, sürüm numaraları için x.xx.xxxx.xxxx biçimini kullanır. Ancak DirectX ve Windows XP MSDN sayfası, kayıt defterinin her zaman x.xx.xx.xxxx biçiminde olduğunu iddia etmektedir. Bu nedenle, yukarıdaki tabloda bir sürüm '4.09.00.0904' olarak listelendiğinde, Microsoft'un DxDiag aracı bunu '4.09.0000.0904' olarak gösterebilir.

Uyumluluk

Windows'un çeşitli sürümleri DirectX'in çeşitli sürümlerini içermiş ve desteklemiştir, bu da işletim sisteminin yeni sürümlerinin DirectX'in önceki sürümleri için tasarlanmış uygulamaları çalıştırmaya devam etmesine izin verir, ta ki bu sürümler daha yeni API'ler, sürücüler ve donanımlar lehine aşamalı olarak kaldırılana kadar.

Direct3D ve DirectSound gibi API'lerin donanımla etkileşime girmesi gerekir ve bunu bir aygıt sürücüsü aracılığıyla yaparlar. Donanım üreticileri bu sürücüleri belirli bir DirectX sürümünün aygıt sürücüsü arayüzü (veya DDI) için yazmak ve her bir donanım parçasını DirectX uyumlu hale getirmek için test etmek zorundadır. Bazı donanım aygıtlarının yalnızca DirectX uyumlu sürücüleri vardır (başka bir deyişle, bu donanımı kullanmak için DirectX yüklemeniz gerekir). DirectX'in ilk sürümleri, şu anda mevcut olan tüm DirectX uyumlu sürücülerin güncel bir kütüphanesini içeriyordu. Ancak bu uygulama, kullanıcıların tüm kütüphane yerine yalnızca donanımlarıyla ilgili sürücüleri indirmelerine olanak tanıyan web tabanlı Windows Update sürücü güncelleme sistemi lehine durduruldu.

DirectX 10'dan önce, DirectX çalışma zamanı eski sürücülerle geriye dönük uyumlu olacak şekilde tasarlanmıştı, yani API'lerin yeni sürümleri önceki bir sürümün DDI'sına karşı yazılmış eski sürücülerle birlikte çalışacak şekilde tasarlanmıştı. Uygulama programcısı, her biri belirli bir donanım özelliğine bağlı karmaşık bir "başlık bitleri" sistemi kullanarak mevcut donanım yeteneklerini sorgulamak zorundaydı. Direct3D 7 ve öncesi DDI'ın herhangi bir sürümünde çalışabilirken, Direct3D 8 en az 6 DDI seviyesi ve Direct3D 9 en az 7 DDI seviyesi gerektiriyordu. Ancak, Windows Vista'daki Direct3D 10 çalışma zamanı, birleşik bir özellik seti gerektiren ve "cap bit" kullanımını terk eden önemli ölçüde güncellenmiş DDI nedeniyle eski donanım sürücülerinde çalışamaz.

Direct3D 10.1, yalnızca Direct3D API'nin belirtilen sürümünde tanımlanan donanım özelliklerinin kullanılmasına izin veren "özellik düzeyleri" 10_0 ve 10_1'i sunar. Direct3D 11, "düşük", "orta" ve "üst düzey" ekran kartlarının ortak özelliklerine göre gruplandırılmış üç özellik seviyesine (9_1, 9_2 ve 9_3) sahip Direct3D 9 donanımında çalışmak üzere tasarlanmış Direct3D 10 API'sinin bir alt kümesi olan 11_0 seviyesini ve "10 Seviye 9 "u ekler; çalışma zamanı doğrudan tüm WDDM sürücülerinde sağlanan Direct3D 9 DDI'yi kullanır. Özellik seviyesi 11_1, Direct3D 11.1 ile tanıtılmıştır.

NET Çerçevesi

2002 yılında Microsoft, DirectX'in Microsoft .NET Framework ile uyumlu bir sürümünü yayınladı ve böylece programcıların yönetilen C++ veya C# programlama dili gibi uyumlu dilleri kullanarak .NET uygulamaları içinden DirectX işlevselliğinden yararlanmasına olanak tanıdı. Bu API "Managed DirectX" (ya da kısaca MDX) olarak biliniyordu ve altta yatan yerel DirectX API'lerinin performansının %98'i oranında çalıştığı iddia ediliyordu. Aralık 2005, Şubat 2006, Nisan 2006 ve Ağustos 2006'da Microsoft bu kütüphane için art arda güncellemeler yayınladı ve Managed DirectX 2.0 adı verilen beta sürümüyle sonuçlandı. Managed DirectX 2.0 daha önce birden fazla derlemeye dağılmış olan işlevselliği tek bir derlemede birleştirerek yazılım geliştiricileri için bağımlılıkları basitleştirirken, bu sürüm üzerindeki geliştirme daha sonra durduruldu ve artık desteklenmiyor. Yönetilen DirectX 2.0 kütüphanesinin süresi 5 Ekim 2006 tarihinde dolmuştur.

GDC 2006 sırasında Microsoft, DirectX, HLSL ve diğer araçları tek bir pakette entegre etmeyi kolaylaştırarak oyun geliştirmeye yardımcı olmayı amaçlayan DirectX'in yeni bir yönetilen sürümü (Managed DirectX'e benzer ancak aynı değildir) olan XNA Framework'ü sundu. Ayrıca Xbox 360 üzerinde yönetilen kodun yürütülmesini de destekler. XNA Game Studio Express RTM, 11 Aralık 2006 tarihinde Windows XP için ücretsiz olarak indirilmeye sunulmuştur. DirectX çalışma zamanının aksine, Managed DirectX, XNA Framework veya Xbox 360 API'leri (XInput, XACT vb.) Windows'un bir parçası olarak gönderilmemiştir. Geliştiricilerin çalışma zamanı bileşenlerini oyunları veya uygulamalarıyla birlikte yeniden dağıtmaları beklenmektedir.

En son XNA sürümleri de dahil olmak üzere hiçbir Microsoft ürünü .NET Framework için DirectX 10 desteği sağlamamaktadır.

Yönetilen dillerde DirectX için diğer bir yaklaşım ise üçüncü taraf kütüphaneleri kullanmaktır:

  • .NET Framework üzerinde DirectX programlama için açık kaynaklı bir kütüphane olan SlimDX
  • Tüm Windows platformlarında .NET için tam DirectX API'si sunan açık kaynaklı bir proje olan SharpDX, yüksek performanslı oyun, 2D ve 3D grafik oluşturma ve gerçek zamanlı ses uygulamalarının geliştirilmesine olanak tanır
  • DirectShow alt kümesi için DirectShow.NET
  • Microsoft'un açık kaynaklı bir kütüphanesi olan .NET Framework için Windows API CodePack.

Alternatifler

DirectX API ailesine alternatifler vardır; OpenGL, halefi Vulkan, Metal ve Mantle, Direct3D ile karşılaştırılabilir en fazla özelliğe sahiptir. Diğer API'lere örnek olarak SDL, Allegro, OpenMAX, OpenML, OpenAL, OpenCL, FMOD, SFML vb. verilebilir. Bu kütüphanelerin çoğu çapraz platformdur veya açık kod tabanlarına sahiptir. Wine'daki gibi aynı API'yi sağlamayı amaçlayan alternatif uygulamalar da vardır. Ayrıca, ReactOS geliştiricileri DirectX'i "ReactX" adı altında yeniden uygulamaya çalışmaktadır.

Sürümleri

DirectX 3

Bu sürüm ile çoklu oyun oynamaya olanak sağlanmış ve 3D ses özelliği eklenmiştir. 1996 yılında son kullanıcıya sunulmuştur.

DirectX 7

Bu DirectX versiyonunda optimizasyona (eniyilemeye) önem verilmiştir. 1999 yılında son kullanıcıya sunulmuştur.

DirectX 8

Bağlantı noktaları (vertexler) ve pixel shader ile görüntü işleme teknolojisi geliştirilmiştir. 2000 yılında son kullanıcıya sunulmuştur.

DirectX 9

Periyodik 32 ve 64 bit desteği sağlanarak gölgelendirme başta olmak üzere birçok temel yapıya rötuş atılmıştır. 2002 yılında son kullanıcıya sunulmuştur.

DirectX 10

Bu sürümde bazı ekran kartları ile uyumsuzluklar giderilmiş, performans üzerinde çalışmalar yapılmıştır. Windows Vista Service Pack 1 ile gelmektedir ve hem Nvidia hem ATI kartları tarafından desteklenmektedir

DirectX 10.1

Bu sürümde bazı ekran kartları ile uyumsuzluklar giderilmiş, performans üzerinde çalışmalar yapılmıştır. Windows Vista Service Pack 1 ile gelmektedir ve hem Nvidia hem ATI kartları tarafından desteklenmektedir.

DirectX 11

Windows 7 ile gelen ve Windows Vista'ya da kurulabilen DirectX sürümüdür. Üstün ve gerçeğe çok yakın grafik kalitesi sağlar. Tesselation gibi poligon çoğaltma ve işleme tekniğini destekler. Sadece destekleyen AMD RADEON HD 5xxx, ve NVIDIA GT4xx serisi kartlar ile kullanılabilir.2009 sonu satışa sunuldu.