Direct3D 9, 10 veya 11'i öğrenmeli miyim? [kapalı]


14

Direct3D ile 3D programlamaya başladım. Hangi D3D sürümünü almalıyım?

11 oldukça düzgün görünüyor, ancak 9 ve 10 hala oldukça mevcut görünüyor. Oyun geliştirme endüstrisinin mevcut durumu göz önüne alındığında, hangi sürümü kullanmaya başlamak daha mantıklı?


“Hangi teknolojiyi kullanacaksınız” soruları iyi soru-cevap soruları değildir.
MichaelHouse

Yanıtlar:


12

Bu, üç yıl veya bir yıl veya altı ay içinde yapılacak bir oyunu üretmek için bir motor tasarlamak isteyip istemediğinize ve konsol bağlantı noktalarını düşünüp düşünmediğinize bağlıdır. Direct3D9'dan oyununuzun 360 bağlantı noktasını atmak nispeten kolay olacak, ancak D3D11'den çok daha fazla şey yapmanız gerekecek. D3D11'in, mutlaka D3D9 donanımı olmasa da tüm XP kullanıcılarını kilitlediğini unutmayın.

En son Steam araştırması, insanların yaklaşık% 16'sının hala Windows XP kullandığını gösteriyor. Onları kesmeyi göze alabilir misin? Oyun bittiğinde, bu nasıl değişecek? Daha üst düzey API'ye bağlı özellikler mi kullanacaksınız? Bunlar kendinize cevap vermeniz gereken sorular.

Direct3D 9 oldukça erişilebilir ve bir D3D9 oyunuyla birçok kişiye ulaşabilirsiniz, ancak günler özellikle PC'de numaralandırılmıştır. Bu insanları hedeflemekle ilgilenmiyorsanız, bunun pek bir anlamı yoktur.

Oh, ve DX10 ile uğraşma. DX11 üzerinde kullanmak için hiçbir sebep yok. D2D / DirectWrite kullanmak istemediğiniz sürece, bu mantıksız değildir.

Tabii ki, DX11'de, hobim olarak kendim için DX9'da son derece yararlı bulduğum sınıfların yerini almadığını belirtmek gerekir. ID3DXMesh, ID3DXSprite, ID3DXFont gibi, kaynaktan ID3DXEffect'i derlemek zorunda. .


Neden etki çerçevesini kaldırdılar? Çok yararlı bir sınıf IMO'ydu.
dotminic

@__dominic: Kaldırılmadı, ama kendiniz derlemelisiniz.
DeadMG

1
@__dominic: DeadMG'nin işaret ettiği gibi, efekt çerçevesi kaldırılmadı, kendinizi derleyebileceğiniz bağımsız bir kod dosyaları kümesine dahil edildi - bunun D3D çekirdeğinden daha akıcı bir şekilde sürümlendirilmesine izin vermek için yapıldığı iddia edildi ve dağıtım sorunlarını kolaylaştırın (özellikle D3DX çevresinde).

1
XP kullanıcılarının% 25'ini kesmekten daha kötü olduğunu düşünüyorum, sadece% 17'sinin DX11 GPU'ları var (şu an itibariyle).
DMan

2
@DMan: D3D11, D3D9 donanımı dahil alt düzey donanımlarda çalışabilir.
DeadMG

9

tldr: D3D11'i öğrenin.

10 ila 11 arasındaki fark, API'nın şekli açısından oldukça küçüktür. D3D11, D3D9 sınıf donanımına kadar geri giden D3D11 API'sine kod yazmak için düşük seviyeleme kullanmanızı sağlar (ancak yine de Vista veya daha iyisine ihtiyacınız olacağını unutmayın). Böylece, daha temiz ve daha düzgün olduğunu düşündüğüm yeni API'yi de öğrenebilirsiniz.

Bununla birlikte, Vista veya daha iyisi yoksa veya sonunda kendi kodunuzun XP'de çalışmasını istiyorsanız (örneğin oyununuzu XP kullanıcılarına dağıtmak için), D3D9'u kullanmanız gerekecektir. XP pazarı muhtemelen daralıyor, bu yüzden eğer yapabilirsen 11 diyebilirim.


3

3D programlama konusunda tamamen yeniyseniz ve özellikle COM ve Windows programlama konusunda yeniyseniz, şimdi DirectX öğrenmeye karşı şiddetle tavsiye ediyorum. Benim tecrübeme göre, DirectX son derece güçlü bir araçtır, ancak Windows programlama, 3D programlama ve diğerlerinin öğrenme eğrilerine ek olarak düşünmeniz gereken çok dik bir öğrenme eğrisine sahiptir. DirectX ile başlarsanız, kazan plakası kodunun tüm detaylarından bunalmış hissedebilirsiniz, bu yüzden ona karşı öneriyorum.

Bunun yerine, 3D programlama hakkında daha fazla bilgiye odaklanmanızı sağlayan daha basit bir API öneriyoruz. XNA oldukça güzel ve DirectX'in üstünde yer aldığından, DirectX'e geçtiğinizde, DirectX öğrenme eğrisini daha kolay hale getirecek bazı fikirleriniz olacak.

Şimdi, OpenGL gibi 3D programlama deneyiminiz varsa ve COM programlamanın nasıl yapılacağını biliyorsanız, DirectX 11'i öneriyorum. daha kısa bir süre.

Ama sonra tekrar, gerçek deneyim çeşitlilikten geliyor, bu yüzden hem DirectX hem de OpenGL'yi ve ayrıca isterseniz XNA'yı ve olabildiğince çok API öğrenmenizi tavsiye ederim. Bu şekilde, 3D programlamanın farklı araçlarla nasıl çalıştığı konusunda soyut bir bilgiye sahip olacaksınız ve her iş için doğru aracı kullanabileceksiniz.


2

DX11 veya DX10'u tavsiye ederim. Fark çok küçük. Sadece DX11 ile daha fazla şey yapabilirsiniz (hw tessalation, daha iyi gpgpu, piksel gölgelendiricisinde birden fazla dokuya çıktı ..). DirectX 9 başka bir mimariye sahip ve şu anda biraz modası geçmiş. Mevcut oyun dev endüstrisi hakkında soruyorsanız: hızlı bir şekilde geliştirilen pc oyunları için DX9 ölüdür.

Ama şunu söylemeliyim:
Api'yi umursamıyorum , grafiklerin nasıl çalıştığını gerçekten anladıktan sonra, yeni api öğrenmek en fazla bir ay sürer. Daha kısa zaman.


3
DX9 modası geçmiş değil. XP'de hala bir ton potansiyel kullanıcı var. Bu artık gelişiminde olmayabilir ve önümüzdeki birkaç yıl içinde yitirmiş hale gidiyor, ama için şimdi öyle değil.
Komünist Ördek

1
@thecommunistduck Kabul ediyorum, ancak DX9 bunu öğrenmek için tamamen modası geçmiş. Çünkü şimdi öğrenmeye başlayan bir başlangıç, iyi bilecek ... modası geçmiş olacak. Ve eminim cevabımda kötü söyledim.
Notabene

-5

Win xp sistemli dx9'un tek çekirdekli tabanlı bir sistem olduğunu duydum. Eski teknoloji. Sizi tavsiye ederim dx11.


3
Bu cevap üretken bir şey eklemez ve "tek çekirdekli sistem" hakkında önerdiğiniz şey belirsizdir (ve muhtemelen yanlış ve yanıltıcıdır).

1
Artı "Bunu duydum ..." inandırıcı bir kanıt kaynağı değil (ya da hemen hemen her şey).
Maximus Minimus
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.