OpenGL yerine Direct3D'yi tercih etmek için herhangi bir neden var mı?


11

Ben okuyordum Yani bu , bir nevi başka OS üzerinde daha Microsoft pencerelerde çok daha fazla oyun vardır nedenini gördü. Sunulan ana sorun Direct3D'nin OpenGL yerine tercih edilmesiydi.

Anlamadığım şey, herhangi bir geliştiricinin neden uyumluluktan fedakarlık etmesidir? Bu sadece şirket için bir mali kayıptır. OpenGL'nin bir tür karışıklık olduğunu anlıyorum, ancak bu uzmanlar için zor bir sorun olmalı. Öyle olsa bile, insanların finansal kayıplara göre daha fazla yol kat edeceklerini düşünüyorum.

Ayrıca yanılmıyorsam, birçok çapraz platform uygulaması hem Direct3D hem de OpenGL kullanıyor. Bence API'lar arasında geçiş yapıyorlar.

Bu sadece OpenGL'yi kullanabildikleri için garip, neden Direct3D'yi bile önemsiyorsunuz?

Yani soru şu ki, OpenGL ile ilgili herhangi bir teknik sorun var mı veya Direct3D'nin OpenGL'den yoksun sağladığı herhangi bir destek var mı?


Bu sorunun konu dışı veya çok geniş olarak kapalı olabileceğinin farkındayım, bunu daraltmak için elimden geleni yaptım.


Eğer farklı bir şey mi arıyorsunuz bu ?
trichoplax


1
İşte sorunuzu cevaplayan iyi bir tarih dersi: programmers.stackexchange.com/questions/60544/…
darius

1
@NathanReed "Yani, Windows'ta OpenGL kullanan çok platformlu geliştiricilere doğru bir geri dönüş göreceğiz." Ve şimdi, 3 yıl sonra, bunun olduğunu söyleyebilir misiniz?
Rotem

2
@Rotem sanmıyorum, hayır. OGL (ve şimdi Vulkan) bugün D3D ile özellik paritesini korumaktan daha iyi, ancak AFAICT, GPU satıcıları hala hata düzeltmeleri ve mükemmel iyileştirmeler için D3D sürücülerine öncelik veriyor ve çoğu oyun / motor hala Windows'ta varsayılan olarak D3D kullanıyor. Dikkate değer bir istisna, hepsi Windows'ta OGL kullanan idTech motorlarıdır .
Nathan Reed

Yanıtlar:


9

Windows için daha fazla oyun olduğu gerçeği hakkında, bazı nedenler

  1. Windows pazarın çoğuna sahiptir ve geçmişte çapraz platform oyunları geliştirmek bugün olduğundan daha karmaşıktı.
  2. DirectX, geliştirme için daha iyi araçlarla birlikte gelir (örneğin, hata ayıklama)
  3. Büyük yenilikler genellikle ilk olarak DirectX'te oluşturulur / uygulanır ve daha sonra OpenGL'de taşınır / uygulanır.
  4. Linux vs Windows için olduğu gibi, (bunun için nedeniyle pazarlama ve tarihsel nedenlerle gerçek bir standart var olduğu zaman düşünmek zorundayız ? | Yazılım Mühendisliği oyun geliştiricileri, Windows tercih edersiniz Neden , onun ataleti vardır ben yorumlarında dediğim gibi) .

Atalet olayı çok önemlidir. Ekibiniz pazarın% 90'ını hedefleyen DirectX için gelişirse (iyi ... PC'de oyun oynarsanız, muhtemelen pencereleriniz var, yani ... pazarın% 99'u?), Neden OpenGL'ye yatırım yapmak istersiniz? Zaten OpenGL'de gelişirseniz, yine pazarın% 99'unu hedefliyorsanız, olabildiğince uzun süre bağlı kalabilirsiniz. Id Yazılım tarafından Id Tech sınavı için OpenGL kullanan mükemmel bir oyun motoru (DOOM serisi güç).

Tartışmanızın konusu hakkında bir yorum.

Bugün itibariyle, birçok API var ve yaygın bir uygulama, bunların üzerinde çalışan bir Oyun Motoru kullanmaktır. Örneğin,

  • Çoğu mobil platformda OpenGl ES kullanmanız gerekir.
  • PC'de hem DirectX hem de OpenGL kullanabilirsiniz
  • Bence XBOX'da DirectX kullanmak zorundasınız.
  • PS'de kendi API'lerini kullandığınızı düşünüyorum.
  • Eski donanımlarda DirectX9 veya OpenGL 3 veya OpenGL ES 2 kullanırsınız.
  • Daha yeni donanımlarla DirectX 11, OpenGL 4, OpenGL ES 3'ü kullanabilirsiniz (ve kullanmak istersiniz).

Son zamanlarda, grafik programlama için önemli bir dönüm noktası olan yeni düşük havai API'lerin ortaya çıkmasıyla birlikte, Windows ve XBOX için DirectX 12, iOS için Metal ve Windows ve Linux için Vulkan (yeni OpenGL) (Android ve Tizen dahil) ).

Hala sadece Windows ve XBOX'u hedefleyen oyunlar var, ancak bugün sadece pazarlama seçimi olabilecek IMHO.


Direct3D'yi tercih etmek için performans nedenleri yok mu?
A - B

@ritwik sinha DirectX 11, çoklu iş parçacığı oluşturma için OpenGL 4'ten daha iyi bir desteğe sahiptir, ancak bildiklerime göre, herhangi bir gerçek performans farkı ile sonuçlanmamıştır. Diğer tarafta, Windows'u DirectX 11 ile ve Linux'u OpenGL 4 ile karşılaştırarak kazanan OpenGL ile Linux'tur. DirectX 12 vs Vulkan ile ilgili olarak, bilmek için çok erken olduğunu düşünüyorum, ama bilmiyorum.
darius

Direct3D ile hiç çalışmadım, bu yüzden çoklu iş parçacığıyla ne demek istediğinizi anlamıyorum. Bildiğim kadarıyla farklı iş parçacıkları farklı görevler için programcılar tarafından ele alınır. Direct3D bunu kaputun altında yapıyor mu? Neyse güzel cevap.
A - B

1
@ritwik sinha gerçek zamanlı grafiklere çoklu iş parçacığının bir uygulama arka plan (doku akışı, tepe arabellekleri) ayırmak için ana iş parçacığı çizme yapar gibi farklı iş parçacıkları kullanabilirsiniz olmasıdır. Bu, OpenGL'de de mümkündür, ancak çok çok zor. DirectX 11'de, performansı arttırması gereken birçok iş parçacığından çizim aramaları da yapabilirsiniz, ancak bu yaygın bir uygulama değildir. UnrealEngine4'ün son sürümünün bunu yaptığını düşünüyorum. Ancak, DirectX 12 ve Vulkan ile çoklu iş parçacığı oluşturma gerçek bir anlaşma olacak.
darius

1

Birkaç olası neden:

  • Tarihsel olarak, OpenGL sürücü kalitesi çok değişti, ancak artık böyle olduğundan emin değilim.
  • Xbox, D3D'yi desteklediğinden, oyun ile PC arasında oyun taşımak daha kolaydır.
  • D3D için hata ayıklama araçları OpenGL'den daha iyi olmuştur. Neyse ki şimdi RenderDoc var
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.