Apakah ada alasan untuk lebih menyukai Direct3D daripada OpenGL?

11

Jadi saya membaca ini , saya mendapatkan alasan mengapa ada lebih banyak game di Microsoft windows daripada di OS lain. Masalah utama yang disajikan adalah bahwa Direct3D lebih disukai daripada OpenGL.

Yang tidak saya mengerti adalah mengapa pengembang mengorbankan kompatibilitas? Itu hanyalah kerugian finansial bagi perusahaan. Saya mengerti bahwa OpenGL agak berantakan, tapi itu seharusnya tidak menjadi masalah bagi para ahli. Bahkan jika ya, saya pikir orang akan bekerja lebih keras daripada harus menanggung kerugian finansial.

Juga jika saya tidak salah maka banyak aplikasi lintas platform menggunakan Direct3D dan OpenGL. Saya pikir mereka beralih di antara API.

Ini aneh karena mereka bisa menggunakan OpenGL, mengapa peduli dengan Direct3D?

Jadi pertanyaannya adalah, apakah ada masalah teknis dengan OpenGL atau adakah dukungan yang disediakan Direct3D yang tidak dimiliki OpenGL?


Saya sadar bahwa pertanyaan ini mungkin ditutup sebagai di luar topik atau terlalu luas, saya mencoba yang terbaik untuk mempersempitnya.

A --- B
sumber
Apakah Anda mencari sesuatu yang berbeda dari ini ?
trichoplax
2
BTW, saya menjawab pertanyaan serupa di GameDev.SE beberapa tahun yang lalu.
Nathan Reed
1
inilah pelajaran sejarah yang bisa menjawab pertanyaan Anda: programmers.stackexchange.com/questions/60544/…
darius
1
@NathanReed "Jadi, mungkin kita akan melihat ayunan ke arah pengembang multi-platform menggunakan OpenGL pada Windows." Dan sekarang, 3 tahun kemudian, akankah Anda mengatakan ini telah terjadi?
Rotem
2
@Rotem Saya tidak berpikir begitu, tidak. OGL (dan sekarang Vulkan) hari ini lebih baik dalam mempertahankan paritas fitur dengan D3D daripada sebelumnya, tetapi AFAICT, vendor GPU masih memprioritaskan driver D3D untuk perbaikan bug dan perbaikan perf, dan sebagian besar game / mesin masih menggunakan D3D secara default pada Windows. Pengecualian penting adalah mesin idTech , yang semuanya menggunakan OGL pada Windows.
Nathan Reed

Jawaban:

9

Tentang fakta bahwa ada lebih banyak game untuk Windows, beberapa alasannya

  1. Windows memiliki mayoritas pasar dan di masa lalu untuk mengembangkan permainan lintas platform lebih rumit daripada sekarang.
  2. DirectX hadir dengan alat yang jauh lebih baik untuk pengembangan (mis. Debugging)
  3. Inovasi besar umumnya pertama kali dibuat / diimplementasikan dalam DirectX, dan kemudian porting ke / diimplementasikan di OpenGL.
  4. Sedangkan untuk Windows vs Linux, Anda harus mempertimbangkan bahwa ketika ada standar aktual karena alasan pemasaran dan historis (untuk itu lihat Mengapa pengembang game lebih memilih Windows? | Rekayasa Perangkat Lunak , seperti yang saya katakan di komentar), ia memiliki kelembaman .

Masalah kelembaman itu sangat penting. Jika tim Anda mengembangkan untuk DirectX, menargetkan 90% pasar (yah ... jika Anda bermain game di pc Anda mungkin memiliki windows, jadi ... 99% pasar?), Mengapa Anda ingin berinvestasi di OpenGL? Jika Anda sudah mengembangkan di OpenGL, kembali menargetkan 99% pasar, Anda akan tetap menggunakannya selama Anda bisa. Sebagai contoh, Id Tech oleh Id Software adalah mesin game yang sangat baik (menjalankan seri DOOM) yang menggunakan OpenGL.

Tentang topik diskusi Anda, komentar.

Sampai hari ini, ada banyak banyak API, dan praktik umum adalah menggunakan Mesin Game yang abstrak di atasnya. Sebagai contoh, pertimbangkan itu

  • Pada sebagian besar platform seluler Anda harus menggunakan OpenGl ES.
  • Pada PC Anda dapat menggunakan DirectX dan OpenGL
  • Saya pikir pada XBOX Anda harus menggunakan DirectX.
  • Saya pikir pada PS Anda menggunakan API mereka sendiri.
  • Dengan perangkat keras lama Anda menggunakan DirectX9 atau OpenGL 3, atau OpenGL ES 2.
  • Dengan perangkat keras terbaru Anda dapat (dan ingin) menggunakan DirectX 11, OpenGL 4, OpenGL ES 3.

Baru-baru ini, dengan munculnya API overhead rendah baru - yang merupakan titik balik utama untuk pemrograman grafis - ada DirectX 12 untuk Windows dan XBOX, Logam untuk iOS dan Vulkan (OpenGL baru) untuk Windows dan Linux (termasuk Android dan Tizen ).

Masih ada game yang hanya menargetkan Windows dan XBOX, tetapi IMHO hari ini yang hanya bisa menjadi pilihan pemasaran.

darius
sumber
Jadi tidak ada alasan kinerja untuk memilih Direct3D?
A --- B
@ritwik sinha DirectX 11 memiliki dukungan yang lebih baik untuk rendering multi threading daripada OpenGL 4, tetapi setahu saya itu belum menghasilkan perbedaan kinerja yang nyata. Di sisi lain, membandingkan Windows dengan DirectX 11 dan Linux dengan OpenGL 4, pemenangnya adalah Linux dengan OpenGL. Mengenai DirectX 12 vs Vulkan, saya pikir ini terlalu dini untuk diketahui, tetapi saya tidak tahu.
darius
saya tidak pernah bekerja dengan Direct3D, jadi saya tidak mengerti apa yang Anda maksud dengan multi threading. Sejauh yang saya tahu utas berbeda ditangani oleh programmer untuk tugas yang berbeda. Apakah Direct3D melakukan ini di bawah tenda? Pokoknya jawaban yang bagus.
A --- B
1
@ritwik sinha aplikasi multi threading untuk grafik waktu nyata adalah bahwa Anda dapat menggunakan utas yang berbeda untuk mengalokasikan resoruces di latar belakang (streaming tekstur, buffer vertex), menggunakan utas utama yang melakukan panggilan draw. Ini juga dimungkinkan di OpenGL, tetapi sangat rumit. Di DirectX 11 Anda juga dapat membuat panggilan draw, dari banyak utas, yang seharusnya meningkatkan kinerja, tetapi itu bukan praktik yang umum. Saya pikir rilis terakhir UnrealEngine4 melakukannya. Namun, dengan DirectX 12 dan Vulkan rendering multi threading akan menjadi masalah nyata.
darius
1

Beberapa kemungkinan alasan:

  • Secara historis, kualitas driver OpenGL sangat bervariasi, tapi saya tidak yakin itu masalahnya lagi.
  • Xbox mendukung D3D sehingga porting game antara itu dan PC lebih mudah.
  • Alat debug untuk D3D lebih baik daripada untuk OpenGL. Untungnya kami sekarang memiliki RenderDoc
Mesin Survival
sumber