DirectX vs. OpenGL vs. Vulkan

DirectX vs. OpenGL ile beraber son zamanlarda Vulkan da merak edilmeye başladı. Bu içerikte sizlere bunlarla ilgili bilgiler sunmak istiyoruz.
DirectX ve OpenGL teknolojisi, 90’lı yıllarda piyasaya sürülen grafik teknolojileri olarak yer alıyor. Vulkan ise son birkaç yıldır varlığını sürdüren bir kitaplık. Bu tür kitaplıkların amacı grafik tabanlı işlemlerin hızlı bir şekilde gerçekleştirilmesini sağlamak. Örneğin oyun oynarken, video işlerken veya video izlerken bu kütüphaneler kullanılıyor.
Mobil aygıtları incelediğimizde OpenGL ES teknolojisinin yoğun bir şekilde kullanıldığı görülüyor. Masaüstü platformlarında ise DirectX ve OpenGL’in yoğun bir kullanımı mevcut. Vulkan ise yavaş yavaş yükselişte.
Başlıklar
DirectX vs. OpenGL vs. Vulkan
Performans
Bu üç teknoloji arasında karşılaştırılması gereken farklardan birisi performans farkı olarak yer almakta. Öncelikle şunu belirtelim ki OpenGL ve Vulkan, aynı ekip tarafından geliştiriliyor. OpenGL, uzun süredir geliştirilmezken Vulkan, güncel olarak geliştirilen bir kütüphane. Bundan dolayı OpenGL ile Vulkan arasında benzerlikler bulunabiliyor.
Genel oyun testlerine baktığımızda DirectX vs. OpenGL arasındaki farklar gerçekten dikkat çekici seviyelerde. OpenGL ve Vulkan, DirectX’e göre bazı oyunlarda kat kat daha fazla FPS sunuyor. Bazı oyunlarda ise her üç teknoloji de birbirine yakın olurken bazılarında DirectX, öne geçiyor.
Özetle oyun performansında genel olarak OpenGL ve Vulkan daha iyi performans sağlıyor. Şunu ifade edelim ki oyunun geliştirildiği programlama dili ve optimizasyonu da bu değerlere etki eder. Bundan dolayı performans testinde oyun seçimi önemli oluyor. Örneğin Minecraft, DirectX ile daha yüksek FPS verebiliyor. Sebebi OpenGL sürümünün JAVA üzerinde geliştirilmesi olurken DirectX tabanlı sürümün C++ ile kodlanması.

Özellikler
Bu üç sürüm arasındaki farklar arasında özellik farklarını da bilmek gerekiyor. Öncelikle DirectX’in özelliklerine değinelim. DirectX, şu özelliklere sahip bir grafik kütüphanesi:
- Direct3D -> Gerçek zamanlı 3 boyutlu işleme
- Direct2D -> 2 boyutlu işleme
- DirectWrite -> Yazı işleme
- DirectML -> Makine öğrenimi ve yapay zeka
- DirectStorage -> Ekran kartı üzerinde depolama
- DXR -> Gerçek zamanlı ışın izleme teknolojisi
- DXGI -> Bağdaştırıcılar ve monitörler ile ilgili bileşen
- DirectCompute -> Genel amaçlı
- XACT3 -> Üst düzey ses işleme
- XAudio2 -> Düşük düzey ses işleme
DirectX vs. OpenGL ve Vulkan karşılaştırması yaparken OpenGL bileşenlerine de değinmek gerekiyor.
- 2 boyutlu işleme
- 3 boyutlu işleme
- Bellek yönetimi
- Donanımlar arasında bağlantı kurma
- İşlem zamanlama
- Geometrik bilgi
- Doku bilgisi
- Ses bilgisi
Vulkan, aslına bakarsak OpenGL’in geleceği olarak nitelendirilen bir girişim. Zaten günümüze baktığımızda OpenGL yerine Vulkan’ın aynı geliştirici ekip tarafından geliştirildiği görülüyor. Vulkan’ın özellikleri ile OpenGL’in özellikleri her ne kadar birbirine benzese de bazı farklılıklar bulunur. Vulkan’ın sunduğu özellikler:
- Oyun döngüsü
- Fizik sistemi
- Giriş aygıtı işleme
- Ses işleme
- Yapay zeka
- Doku ve model yönetimi
- Çapraz platform desteği
- Düşük CPU tüketimi
- Çoklu iş parçacığı desteği
- Önceden derlenmiş gölgelendirme
- Işın izleme
Geliştirme
Eğer oyun motoru kullanılmayacak ise geliştirme yaparken bu kütüphanelerden birisi indirilmeli ve kodlanmaya başlanmalı. Her bir kütüphanenin kodlanması oldukça pratik olsa da bizim önerimiz bir oyun motoru kullanmak. Oyun motoru sayesinde kütüphane ile ilgili işlemler otomatik bir şekilde gerçekleştiriliyor. Örnek olarak Unreal Engine ve Unity oyun motorundan bahsedebiliriz. Bu oyun motorları, gerekli ihtiyaçları rahatlıkla karşılayacak düzeyde uygulamalar olmakta. Yapılması gereken şey Unity’de C# veya Unreal Engine’da C++ ile kod yazmak. Diğer işlemler otomatik bir şekilde hallediliyor.