Haruskah saya belajar Direct3D 9, 10 atau 11? [Tutup]

14

Saya baru mulai masuk ke pemrograman 3D dengan Direct3D. Versi D3D apa yang harus saya ambil?

11 terlihat cukup rapi, tetapi 9 dan 10 tampaknya masih cukup. Dengan kondisi industri pengembangan game saat ini, versi apa yang lebih masuk akal untuk mulai digunakan?

dotminik
sumber
Pertanyaan "Teknologi mana yang harus digunakan" bukan pertanyaan Tanya Jawab yang baik.
MichaelHouse

Jawaban:

12

Itu tergantung pada apakah Anda ingin merancang mesin untuk menghasilkan permainan yang akan dilakukan dalam tiga tahun, atau satu tahun atau enam bulan, dan apakah Anda memikirkan port konsol atau tidak. Ini akan relatif mudah untuk membuang 360 port game Anda dari Direct3D9, tetapi Anda harus melakukan lebih banyak hal yang berasal dari D3D11. Ingat bahwa D3D11 mengunci semua pengguna XP, jika tidak semua perangkat keras D3D9.

Survei Steam terbaru menunjukkan bahwa sekitar 16% orang masih menggunakan Windows XP. Bisakah Anda menghentikannya? Pada saat gim Anda selesai, bagaimana ini akan berubah? Apakah Anda akan menggunakan fitur yang bergantung pada API tingkat yang lebih tinggi? Ini adalah pertanyaan yang perlu Anda jawab sendiri.

Direct3D 9 sangat mudah diakses dan Anda dapat menjangkau banyak orang dengan permainan D3D9, tetapi sekarang jumlahnya sudah ditentukan, terutama di PC. Jika Anda tidak tertarik untuk menargetkan orang-orang itu, maka ada gunanya.

Oh, dan jangan repot-repot dengan DX10. Tidak ada alasan sama sekali untuk menggunakannya di DX11. Kecuali jika Anda ingin menggunakan D2D / DirectWrite, yang tidak masuk akal.

Tentu saja, perlu disebutkan bahwa di DX11, tidak ada pengganti untuk kelas yang, sebagai hobiis sendiri, saya temukan sangat berguna di DX9. Seperti ID3DXMesh, ID3DXSprite, ID3DXFont, harus mengkompilasi ID3DXEffect dari sumber, dll. Microsoft merekomendasikan DirectWrite untuk mengganti ID3DXFont, tetapi tentu saja, mereka lupa untuk benar-benar membuat DX11 kompatibel dengan sistem Direct2D / DirectWrite yang baru, yang menurut saya sangat bodoh. .

DeadMG
sumber
Mengapa mereka menghapus kerangka efek? Itu adalah IMO kelas yang sangat berguna.
dotminic
@__dominic: Tidak dihapus, tetapi Anda harus mengompilasinya sendiri.
DeadMG
1
@__dominic: Seperti yang ditunjukkan DeadMG, kerangka efek tidak dihapus, itu diperhitungkan menjadi satu set file kode mandiri yang dapat Anda kompilasi sendiri - ini diduga dilakukan untuk memungkinkannya diversi dengan lebih lancar daripada inti D3D, dan meringankan masalah penyebaran (khususnya di sekitar D3DX).
1
Saya pikir lebih buruk daripada memotong 25% dari pengguna XP adalah bahwa hanya 17% memiliki GPU DX11 (seperti yang sekarang).
DMan
2
@DMan: D3D11 dapat berjalan di perangkat keras tingkat bawah, termasuk perangkat keras D3D9.
DeadMG
9

tldr: Belajar D3D11.

Perbedaan antara 10 dan 11 cukup kecil, dalam hal bentuk API. D3D11 memungkinkan Anda untuk menggunakan level-down untuk menulis kode terhadap API D3D11 yang akan berjalan kembali ke perangkat keras kelas D3D9 (perhatikan bahwa Anda masih memerlukan Vista atau yang lebih baik). Jadi Anda sebaiknya mempelajari API yang lebih baru, yang saya rasa lebih bersih dan lebih seragam.

Namun, jika Anda tidak memiliki Vista atau lebih baik, atau Anda akhirnya ingin kode Anda sendiri berjalan di XP (misalnya untuk mendistribusikan game Anda ke pengguna XP), Anda harus menggunakan D3D9. Pasar XP mungkin menyusut, jadi saya akan katakan pergi untuk 11 jika Anda bisa.


sumber
3

Jika Anda benar-benar baru dalam pemrograman 3D, dan terutama jika Anda baru dalam pemrograman COM dan Windows, saya akan sangat menyarankan untuk tidak belajar DirectX sekarang. Dalam pengalaman saya, DirectX adalah alat yang sangat kuat, tetapi memiliki kurva belajar yang sangat curam, yang harus Anda pertimbangkan selain kurva belajar pemrograman Windows, pemrograman 3D, dan banyak lainnya. Jika Anda mulai dengan DirectX, Anda mungkin merasa kewalahan dengan semua detail pembuatan kode boilerplate, jadi saya sarankan untuk tidak melakukannya.

Sebagai gantinya, saya akan merekomendasikan API sederhana yang memungkinkan Anda untuk lebih fokus belajar tentang pemrograman 3D. XNA cukup bagus, dan karena terletak di atas DirectX, begitu Anda pindah ke DirectX, Anda akan memiliki beberapa ide yang akan membuat kurva pembelajaran DirectX lebih mudah untuk dijalankan.

Sekarang, jika Anda memiliki pengalaman dalam pemrograman 3D, seperti dengan OpenGL, dan Anda tahu bagaimana melakukan pemrograman COM, saya akan merekomendasikan DirectX 11. Apa pun kecuali versi terbaru sudah usang, dan setiap pengalaman yang Anda dapatkan darinya akan berguna untuk rentang waktu yang lebih pendek.

Tapi sekali lagi, pengalaman sebenarnya berasal dari varietas, jadi saya sarankan Anda mempelajari DirectX dan OpenGL, dan juga XNA jika Anda mau, dan sebanyak mungkin API. Dengan begitu, Anda akan memiliki pengetahuan abstrak tentang bagaimana pemrograman 3D bekerja dengan alat yang berbeda, dan Anda akan dapat menggunakan alat yang tepat untuk setiap pekerjaan.


sumber
2

Saya merekomendasikan DX11 atau DX10. Perbedaannya sangat kecil. Anda bisa melakukan lebih banyak hal dengan DX11 (hw tessalation, gpgpu lebih baik, output ke beberapa tekstur pada pixel shader ..). DirectX 9 memiliki arsitektur lain dan sedikit ketinggalan zaman saat ini. Jika Anda bertanya tentang industri dev game saat ini: untuk game pc yang dikembangkan saat ini adalah DX9 mati.

Tetapi saya harus mengatakan:
Jangan pedulikan api , setelah Anda benar-benar mengerti cara kerja grafik, belajar api baru akan memakan waktu maksimal satu bulan. Waktu bahkan lebih pendek.

Notabene
sumber
3
DX9 tidak ketinggalan jaman. Masih ada satu ton pengguna potensial di XP. Mungkin tidak dalam pengembangan lagi, dan akan menjadi usang dalam beberapa tahun ke depan, tetapi untuk saat ini tidak.
Bebek Komunis
1
@ thailandistduck, saya setuju, tetapi DX9 benar-benar ketinggalan jaman untuk mempelajarinya. Karena sekali pemula yang mulai mempelajarinya sekarang, akan mengetahuinya dengan baik ... itu akan menjadi usang. Dan tentu saja saya menjawabnya dengan buruk dalam jawaban saya.
Notabene
-5

Saya mendengar bahwa DX9 dengan sistem win xp adalah sistem berbasis inti tunggal. Itu teknologi tua. Saya merekomendasikan Anda dx11.

seo
sumber
3
Jawaban ini tidak menambahkan sesuatu yang produktif, dan tidak jelas (dan berpotensi salah dan menyesatkan) apa yang Anda sarankan mengenai "sistem inti tunggal."
1
Ditambah lagi "Aku dengar itu ..." bukan sumber bukti yang kredibel (atau cukup banyak, sebenarnya).
Maximus Minimus