Apakah ada keuntungan menggunakan DX10 / 11 untuk gim 2D?

10

Saya tidak sepenuhnya akrab dengan set fitur yang diperkenalkan oleh perangkat keras kelas DX10 / 11. Saya agak tidak asing dengan tahapan baru yang ditambahkan ke jalur pipa grafis yang dapat diprogram, seperti geometri shader, compute shader, dan tahapan tessellation baru. Saya tidak melihat bagaimana semua ini membuat banyak perbedaan untuk game 2D.

Apakah ada alasan kuat untuk beralih ke DX10 / 11 (atau yang setara dengan OpenGL) untuk game 2D, atau apakah lebih bijaksana untuk tetap menggunakan DX9 mengingat bahwa sebagian besar pasar masih berjalan pada teknologi yang lebih tua (misalnya Februari 2012 Survei uap mendaftar sekitar 17% pengguna yang masih menggunakan Windows XP)?

David Gouveia
sumber

Jawaban:

5

Itu tergantung pada apa yang Anda lakukan. Jika Anda menggunakan Direct3D, satu - satunya alasan untuk beralih adalah untuk mendapatkan akses ke fitur perangkat keras yang tidak bisa Anda dapatkan sebaliknya.

Untuk gim 2D, secara teori dimungkinkan bahwa fitur tertentu mungkin menarik bagi Anda. Misalnya, OpenCL atau DirectCompute. Civilization V mulai memanfaatkan DirectCompute untuk mendekompresi tekstur. Ini secara dramatis mengurangi waktu pengambilan, karena hanya memuat data yang dikompresi. Dan game 2D sering memiliki banyak gambar. Jika waktu buka adalah masalah, ini mungkin membantu.

OpneCL harus tersedia di semua perangkat keras GeForce 8xxx ke atas. Pada ATI, tersedia di HD 4xxx dan perangkat keras yang lebih baik.

Saya akan mengatakan fitur terbesar yang mungkin Anda gunakan di DX11 adalah kemampuan untuk lebih banyak membaca dan menulis gambar secara acak dalam shader. Itu bisa berguna untuk efek khusus tertentu. Saya tidak bisa memikirkan apa pun sekarang ... yang seharusnya memberi tahu Anda seberapa besar kemungkinan ini menjadi penting.

Secara umum, saya akan mengatakan bahwa jika Anda menggunakan D3D, Anda mungkin tidak akan mendapatkan banyak. Dan jika Anda belum memahami apa saja fitur-fitur baru itu dan ingin menggunakannya dalam gim Anda, Anda hampir pasti tidak akan mendapatkan banyak. Kebanyakan dari mereka akan menjadi lebih kompleks.

OpenGL berbeda karena satu alasan utama. OpenGL 2.1 (kurang lebih setara dengan D3D9) mengisap sebagai API. OpenGL 3.3 (ditambah beberapa ekstensi baru yang berjalan pada perangkat keras 3.3) banyak meningkatkan API. Lokasi atribut eksplisit, pemisahan program shader, semuanya dalam paket bahasa shading 420 , dan sebagainya.

Beberapa di antaranya berfungsi cukup baik dalam bentuk ekstensi terhadap 2.1. Beberapa dari mereka ... tidak. Saya masih tidak yakin apakah boleh menggunakan lokasi atribut eksplisit dengan attributedeklarasi (sebelum insintaksis saat ini ). Paket bahasa Shading 420 secara khusus mengatakan bahwa itu tidak bekerja dengan versi GLSL sebelum 1,30 (alias: OpenGL 3.0).

Itu tidak mengatakan bahwa GL 2.1 tidak dapat digunakan. Ini tentu fungsional dan bisa digunakan, hanya saja tidak menyenangkan. Meskipun beberapa driver yang Anda temukan mengimplementasikannya tidak dapat diperbaiki. Perangkat keras AT9 DX9 tidak lagi didukung, sehingga driver-driver tersebut benar-benar bermasalah. Dan Intel tidak pernah peduli dengan OpenGL, jadi menggunakan shader pada perangkat keras mereka adalah keberuntungan.

Tetapi secara pribadi, jika basis pengguna yang Anda inginkan memungkinkan, saya akan mendorong ke GL 3.3 jika Anda menggunakan OpenGL. Jika tidak, Anda hanya harus berurusan dengan masalah 2.1.

Nicol Bolas
sumber
5

Ada beberapa hal yang saya pikir harus Anda pertimbangkan:

  • Jika Anda memiliki mesin D3D9 yang teruji dengan baik, mungkin tidak layak untuk dipindahkan ke D3D11, jika Anda tidak akan menggunakan fitur-fitur baru. Ketika mulai dari awal, D3D11 jauh lebih menggoda.

  • Seberapa cepat tanggal rilis game Anda? XP akan keluar dari dukungan hanya dalam dua tahun, dan jika Anda melihat data historis bahwa XP menginstal basis menurun cukup cepat (~ 1% / bulan di Steam).

  • Pertimbangkan proporsi 17% pengguna XP yang memiliki PC yang memenuhi spesifikasi minimum untuk game Anda di bawah D3D9. Semakin tinggi itu semakin berharga itu mendukung mereka.

  • DX10 sebagian besar tidak berguna untuk digunakan untuk pengembangan baru. DX11 berjalan pada sistem operasi dan perangkat keras yang sama (melalui level fitur).

  • DX11 mendukung renderer perangkat lunak (WARP) sebagai perangkat cadangan, yang bisa cukup cepat untuk menjalankan game dengan persyaratan GPU rendah.

  • DX9 asli mendukung lebih banyak fitur daripada D3D11 saat menggunakan tingkat fitur D3D9. Untungnya perangkat keras DX9 di PC yang mampu DX10 jarang terjadi.

  • Perangkat keras DX10 / 11 memiliki kemampuan yang jauh lebih sedikit sehingga, jika Anda menggunakan perangkat keras DX9 menggunakan WARP, Anda tidak perlu khawatir tentang keterbatasan canggung dengan hal-hal seperti tekstur non-kekuatan-dua atau pemetaan texel-pixel yang canggung .

  • Jika gim Anda akan menjadi perangkat keras intensif, DX11 memiliki beberapa trik tambahan yang tersedia untuk meningkatkan kinerja. Multi-threading kode undian misalnya.

Adam
sumber
Saya agak bingung tentang level fitur. Jika saya mengembangkan menggunakan DX11 tetapi menargetkan tingkat fitur DX9, saya mengerti bahwa itu akan berjalan pada perangkat keras DX9. Tetapi apakah masih membutuhkan runtime DX11 yaitu apakah akan berjalan pada Windows XP?
David Gouveia
DX11 tidak bekerja di XP sama sekali. Apa yang dilakukan oleh level fitur adalah membiarkan Anda menggunakan API DX11 dengan perangkat keras yang lebih lama. Lihatlah msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx untuk perincian tentang apa yang memungkinkan setiap tingkat fitur memungkinkan Anda melakukannya.
Adam
1

Shader geometri saja merupakan alasan untuk menggunakan D3D10 / 11, jika Anda berencana memiliki sejumlah besar partikel atau sprite.

DirectCompute juga dapat digunakan untuk beberapa manfaat kecepatan yang bagus.

Secara pribadi, hanya memiliki D3D10 / 11 API yang jauh lebih bersih dan lebih baik adalah alasan yang cukup untuk tidak pernah menyentuh D3D9 atau OpenGL lagi untuk proyek modern-Windows saja. Namun, secara realistis, kebutuhan untuk menargetkan perangkat seluler dengan GL | ES dan kerumunan WinXP yang masih cukup besar mengharuskan untuk menghindari D3D10 / 11 dan tetap menggunakan D3D9 atau OpenGL.

Perhatikan bahwa menggunakan rute OpenGL memungkinkan Anda mendapatkan geometri shader, OpenCL, dan fitur perangkat keras lainnya bahkan di WinXP.

Sean Middleditch
sumber