GNU/Linux >> Belajar Linux >  >> Linux

Mengapa tidak ada API DirectX untuk Linux?

Mengapa tidak menggunakan OpenGL saja? Ini mendukung semua fungsi yang dilakukan DirectX. Apakah Anda memiliki alasan khusus untuk menggunakan DirectX? Karena suatu alasan, Microsoft membuat DirectX dan saya rasa mereka tidak merasa perlu untuk mengizinkannya berjalan di Linux.

Anda dapat menjalankan game DirectX di Linux menggunakan Wine. Anda dapat memprogram XNA di Linux menggunakan MonoGame. Tetapi semua ini menggunakan OpenGL untuk menyediakan perenderan yang dipercepat perangkat keras. AFAIK, OpenGL telah (dan mungkin akan menjadi) satu-satunya pilihan di Linux di masa mendatang.

Apakah mungkin untuk menulis implementasi DirectX Anda sendiri? Tentu - tetapi ini melibatkan penulisan driver, pengetahuan hak milik, dan mungkin terlalu banyak biaya bagi siapa pun untuk BENAR-BENAR mendapat manfaat darinya.

EDIT:Saat ini, DXVK adalah cara yang sangat nyata dan berkinerja baik untuk menjalankan aplikasi DirectX di Linux.


DirectX adalah setelan API:

  • Direct3D (menggambar grafik 3D)
  • Infrastruktur Grafik DirectX (menghitung adaptor dan monitor serta mengelola rantai pertukaran)
  • Direct2D (menggambar grafis 2D)
  • DirectWrite (font)
  • DirectCompute (Komputasi GPU)
  • DirectSound3D (pemutaran suara 3D)
  • Media DirectX (DirectAnimation untuk animasi web 2D/3D, DirectShow untuk pemutaran multimedia dan streaming media, DirectX Transform untuk interaktivitas web, dan Direct3D Retained Mode untuk grafik 3D tingkat lebih tinggi)
  • Diagnostik DirectX (alat untuk mendiagnosis dan membuat laporan tentang komponen yang terkait dengan DirectX, seperti driver audio, video, dan masukan)
  • Objek Media DirectX (dukungan untuk objek streaming seperti pembuat enkode, dekoder, dan efek)
  • Penyiapan Langsung (pemasangan komponen DirectX, dan deteksi versi DirectX saat ini)

Komponen DirectX tidak digunakan lagi, tetapi masih didukung

  • DirectDraw
  • Input Langsung
  • DirectPlay
  • DirectSound
  • DirectMusic

Seperti yang Anda lihat, banyak bagian dari setelan DirectX API perlu ditulis ulang dengan fungsionalitas untuk Driver yang ditulis untuk Linux. Juga beberapa bagian dari setelan DirectX kemungkinan akan melakukan panggilan ke OS Windows dan kode tersebut harus ditulis ulang untuk mesin Linux tanpa melanggar bagian salinan yang ditulis dari DirectX atau OS Windows.

Ya, Anda dapat menulis setelan API open source yang melakukan hal yang sama seperti DirectX untuk Linux, namun tanpa pengetahuan yang baik tentang driver/dukungan suara dan grafis oleh pabrikan mereka untuk Linux, ini akan menjadi tugas yang sangat sulit untuk dilakukan.

Namun jika pertanyaan Anda lebih dari "Bisakah saya mendapatkan/menulis sesuatu untuk dapat menjalankan game dan program yang dibuat dengan DirectX untuk dijalankan di Linux?" dalam artinya, singkatnya tidak karena kemungkinan besar pelanggaran hak cipta.


AFAIK, DirectX berisi 3 bagian

  • Driver vendor (menyediakan API tingkat rendah yang ditentukan oleh DX)
  • Pustaka DirectX (gunakan API tingkat rendah yang ditentukan oleh DX untuk mengakses perangkat keras, berikan DirectX API)
  • Software (gunakan DirectX API, ex. game)

Tidak ada driver yang menyediakan API level rendah yang ditentukan oleh DX di linux, jadi meskipun dimungkinkan untuk menyediakan pustaka DirectX, tetapi itu tidak akan berfungsi tanpa driver vendor yang tepat, dan saya tidak dapat melihat apakah ada vendor yang akan pergi untuk membuatnya untuk platform perangkat keras mereka.


Pertanyaan Anda salah pada tahun 2019. DXVK adalah implementasi dari implementasi D3D11 dan D3D10 untuk Linux menggunakan Vulkan dan Wine

Mesa juga memiliki implementasi Direct3D 9 asli tetapi setahu saya, tidak ada yang menggunakannya kecuali wine


Linux
  1. Linux – Alat Untuk Mengukur Kualitas Entropi?

  2. Linux Vs Windows – Mengapa Linux Lebih Baik Untuk Pemrograman &Web Dev

  3. Apakah ada C++ gdb GUI untuk Linux?

  1. Mengapa Linux? – Beberapa Alasan Untuk Mengkonversi Ke Linux

  2. Mengapa saya tidak melihat MSG_EOR untuk SOCK_SEQPACKET di linux?

  3. Apakah ada yang setara dengan cd - untuk cp atau mv?

  1. Apakah ada STDCALL di Linux?

  2. Apakah ada Flash Player mandiri untuk Linux?

  3. Layanan Linux:apakah ada GUI untuk layanan?