2D oyun için DX10 / 11 kullanmanın herhangi bir avantajı var mı?


10

DX10 / 11 sınıfı donanım tarafından sunulan özellik setine tamamen aşina değilim. Geometri gölgelendirici, hesaplama gölgelendirici ve yeni mozaikleme aşamaları gibi programlanabilir grafik boru hattına eklenen yeni aşamalara aşinayım. Bunların herhangi birinin bir 2D oyun için nasıl çok fark yarattığını görmüyorum.

Bir 2D oyun için DX10 / 11'e (veya OpenGL eşdeğerlerine) geçiş yapmak için zorlayıcı bir neden var mı, yoksa pazarın önemli bir payının hala eski teknolojilerde (ör. Şubat 2012 Steam anketleri, kullanıcıların hala% 17'sini hala Windows XP kullandığını gösteriyor).

Yanıtlar:


5

Ne yaptığınıza bağlı. Direct3D kullanıyorsanız, geçiş yapmanın tek nedeni, başka türlü alamayacağınız donanım özelliklerine erişmektir.

2D bir oyun için, teorik olarak bazı özelliklerin ilginizi çekmesi mümkündür. Örneğin, OpenCL veya DirectCompute. Civilization V, dokuları açmak için DirectCompute'den biraz yararlanır. Bu, sadece sıkıştırılmış verileri yüklemesi gerektiğinden yükleme süresini önemli ölçüde azaltır. Ve 2D oyunlarda genellikle çok fazla resim bulunur. Yükleme süresi önemliyse, bu yardımcı olabilir.

OpneCL tüm GeForce 8xxx donanımlarında ve üstünde mevcut olmalıdır. ATI'de HD 4xxx ve daha iyi donanımlarda mevcuttur.

DX11'de kullanabileceğiniz en büyük özelliğin gölgelendiricideki görüntüleri daha keyfi olarak okuma ve yazma yeteneği olduğunu söyleyebilirim. Bu, bazı özel efektler için yararlı olabilir. Şu anda hiçbir şey düşünemiyorum ... bu size bunun ne kadar önemli olduğunu söylemelidir.

Genel olarak, D3D kullanıyorsanız muhtemelen çok fazla kazanamayacağınızı söyleyebilirim. Ve yeni özelliklerin ne olduğunu zaten anlamadıysanız ve bunları oyununuzda kullanmak istiyorsanız, neredeyse kesinlikle çok fazla kazanamayacaksınız. Çoğu daha karmaşık olacak.

OpenGL önemli bir nedenden dolayı farklıdır. OpenGL 2.1 (D3D9'a az ya da çok eşdeğer) bir API olarak berbat . OpenGL 3.3 (artı 3.3 donanımda çalışan bazı yeni uzantılar) API'yı çok geliştirir. Açık öznitelik konumu, gölgelendirici programlarının ayrılması, gölgelendirme dil paketi 420'deki her şey vb.

Bunlardan bazıları 2.1'e karşı uzatma şeklinde yeterince iyi çalışıyor. Bazıları ... yapma. Hala attribute(geçerli insözdiziminden önce ) bildirimleriyle açık öznitelik konumlarını kullanmanın uygun olup olmadığından emin değilim . Gölgelendirme dili paketi 420, özellikle 1.30'dan önceki GLSL sürümleriyle çalışmadığını söylüyor (aka: OpenGL 3.0).

Bu GL 2.1'in kullanılamaz olduğu anlamına gelmez. Kesinlikle işlevsel ve servis edilebilir, sadece eğlenceli değil. Bu uygulamaya bulacaksınız bazı sürücüler rağmen o değil servis. ATI'nin DX9 donanımı artık desteklenmediği için bu sürücüler gerçekten hatalı. Ve Intel asla OpenGL'yi umursamadı, bu yüzden donanımlarında gölgelendiricilerin kullanılması pot-şans.

Ancak kişisel olarak, amaçladığınız kullanıcı tabanı buna izin veriyorsa, OpenGL kullanıyorsanız GL 3.3'e basarım. Değilse, sadece 2.1 sorunla uğraşmak zorunda kalacaksınız.


5

Düşündüğünüzü düşündüğüm birkaç şey var:

  • İyi test edilmiş bir D3D9 motorunuz varsa, yeni özellikleri kullanmayacaksanız muhtemelen D3D11'i taşımaya değmez. Sıfırdan başlarken D3D11 çok daha caziptir.

  • Oyununuzun çıkış tarihi ne kadar olacak? XP sadece iki yıl içinde desteklenmeyecek ve XP kurulum tabanının oldukça hızlı bir şekilde düştüğü geçmiş verilerine bakarsanız (Steam'de ~% 1 / ay).

  • XP kullanıcılarının% 17'sinin D3D9 altında oyununuz için minimum spesifikasyonu karşılayan bir PC'ye sahip olacağını düşünün. Bu ne kadar yüksek olursa, onları desteklemeye o kadar değerlidir.

  • DX10 çoğunlukla yeni geliştirme için kullanışsızdır. DX11 aynı işletim sistemlerinde ve donanımda çalışır (özellik seviyeleriyle).

  • DX11, düşük GPU gereksinimleri olan bir oyunu çalıştırmak için yeterince hızlı olabilen bir geri dönüş cihazı olarak bir yazılım oluşturucuyu (WARP) destekler.

  • Yerel DX9, D3D9 özellik seviyelerinden herhangi birini kullanırken D3D11'den daha fazla özelliği destekler. Neyse ki DX10 özellikli PC'lerde DX9 donanımı nadirdir.

  • DX10 / 11 donanımının çok daha az çeşitli yetenekleri vardır, bu nedenle DX9 donanımını WARP kullanmanız durumunda, ikisinin gücü olmayan dokular veya garip piksel-piksel eşleme gibi garip sınırlamalar hakkında endişelenmenize gerek yoktur .

  • Oyununuz donanım açısından yoğun olacaksa, DX11'in performansı arttırmak için birkaç hilesi vardır. Örneğin, çizim kodunun çoklu iş parçacıklı işlenmesi.


Özellik seviyeleri hakkında biraz kafam karıştı. DX11 kullanarak geliştiririm ama bir DX9 özellik seviyesini hedeflersem, DX9 donanımında çalışacağını anlıyorum. Ancak yine de DX11 çalışma zamanını gerektirecek mi, yani Windows XP'de çalışacak mı?
David Gouveia

DX11, XP'de hiç çalışmaz. Özellik seviyelerinin yaptığı şey, DX11 API'sini eski donanımlarla kullanmanıza izin vermektir. Check out msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx her özellik düzeyi yapalım ne ayrıntıları için.
Adam

1

Geometri gölgelendiricileri, çok sayıda parçacık veya sprite sahip olmayı planlıyorsanız, D3D10 / 11'i kullanmanın bir nedenidir.

DirectCompute ayrıca bazı güzel hız avantajları için de kullanılabilir.

Kişisel olarak, D3D10 / 11'in çok daha temiz ve daha güzel API'sine sahip olmak, sadece modern Windows'lu projeler için D3D9 veya OpenGL'ye tekrar dokunmamak için yeterli bir nedendir. Gerçekçi olmakla birlikte, GL | ES ve hala büyük olan WinXP kalabalığına sahip mobil cihazları hedefleme ihtiyacı D3D10 / 11'den kaçınmayı ve D3D9 veya OpenGL'ye bağlı kalmayı gerektirir.

OpenGL yoluna gitmenin WinXP'de bile geometri gölgelendiricileri, OpenCL ve diğer yeni donanım özelliklerini elde etmenizi sağladığını unutmayın.

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.