2012-06-20 67 views
11

考慮到用於現代視頻卡的Windows系統上的DirectX API的驅動程序端實現,我想知道爲什麼這個實現在非Windows系統上不可用,最顯着的是Linux。爲什麼沒有適用於Linux的DirectX API?

由於這個功能顯然不存在,我只能假設我有一個很好的理由,但我在原始的理解中只是將DirectX調用視爲硬件設備上的函數入口點。對於記錄,我並不是指兼容性層(最值得注意的是WINE,這個項目我每天都很驚訝),而是一個直接硬件調用的庫。

是否有可能創建一個開源版本的directx?會不會有可能,但會帶來難以置信的困難?

+0

沒有「缺少此功能」。 Linux提供了其他非Microsoft非專有圖形API。 –

+8

@BenVoigt你完全錯過了這個問題的關鍵。他並沒有問及Linux具有的加速3D圖形渲染功能,而是關於DirectX功能,而不是它。 –

回答

13

AFAIK,DirectX的含有3份

  • 賣方驅動器(提供由DX定義的低級API)
  • 的DirectX庫(使用由DX定義的低級API來訪問的硬件,提供的DirectX API)
  • 軟件(使用DirectX API,恩。遊戲)

有沒有駕駛員提供由DX在Linux上定義的底層API,所以即使它可能提供了DirectX庫,但它如果沒有適當的供應商驅動程序,將無法正常工作,而且我無法看到是否有供應商將爲其硬件平臺創建一個。

5

爲什麼不只是使用OpenGL?它支持DirectX所具有的所有功能。你有使用DirectX的具體原因嗎?至於原因,Microsoft made DirectX,我想他們沒有看到任何需要允許它在Linux上運行。您可以運行DirectX games in Linux using Wine。您可以使用MonoGame在Linux上編程XNA。但所有這些都使用OpenGL來提供硬件加速渲染。 AFAIK,在可預見的未來,OpenGL已經(也可能是)Linux上唯一的選擇。

是否可以編寫自己的DirectX實現?當然 - 但它涉及寫驅動程序,專有知識和可能太多的成本,任何人都可以從中受益。

+6

這個問題來自可用性的觀點,而不是一個發展的問題。如果遊戲行業正在使用DirectX,那麼我想知道遊戲行業將現有遊戲移植到Linux的障礙。 使用完全相同的硬件,我可以在一個操作系統中本地運行遊戲,但不能在另一個操作系統中運行遊戲,所以在我的天真中,我想想像寫入API層一樣簡單,然後將所有內容都傳遞給驅動程序。 顯然這不存在,所以我的理解是錯誤的,我只是想澄清一下。 – Brian

1

爲DirectX創建端口的工作會產生與您在WINE中遇到的相同的問題。它永遠不會像在Windows上一樣。從這個原理衍生出來,你必須研究OpenGL和相關的多平臺庫。

在這個時刻,如果你想用你已經擁有的DirectX代碼完成某些事情,WINE將成爲你最接近的媒介。然後再次,我不確定Visual Studio或簡單的打字會如何讓您更接近流暢的環境。 WINE圖書館距離本土並不遙遠,但總是存在仿效,在我誠懇的意見中某個點可以接受。

如果我看看最終幻想XIV在我的iMac(2011)上的完整設置上運行得有多麼出色,我認爲依靠WINE的實現並不是那麼糟糕。遊戲在我的iMac上完全呈現在Bootcamp(Windows)上。

如果您真的想在這方面做出努力,您可以嘗試在論壇或郵件列表中詢問WINE Devs,您可能只使用DirectX兼容性的實現並將其用於您的項目。你也許可以調用庫,而不是通過Windows仿真系統調用請求DirectX。

編輯:我完全同意user956030的回答。

1

DirectX是API的的西裝:

  • 的Direct3D(繪製3D圖形)
  • 的DirectX圖形基礎結構(枚舉適配器和監視器和管理交換鏈)
  • 的Direct2D(繪製2D圖形)
  • DirectWrite(字體)
  • 的DirectCompute(GPU計算)
  • DirectSound3D(3D的播放聲音)
  • DirectX媒體(用於2D/3D網絡動畫,DirectShow對多媒體播放和流媒體,支持DirectX變換的網頁DirectAnimation的交互性和用於更高級別3D圖形的Direct3D保留模式)
  • DirectX診斷(用於診斷和生成與DirectX相關組件的報告的工具,例如音頻,視頻和輸入驅動程序)
  • DirectX媒體對象
  • DirectSetup(安裝DirectX組件的,和當前的DirectX版本的檢測)

的DirectX(用於流對象,如編碼器,解碼器,和效果支持)組件過時了,但仍然支持

  • 的DirectDraw
  • 的DirectInput
  • 的DirectPlay
  • DirectSound的
  • 的DirectMusic

正如你所看到的API的DirectX的西裝的許多地方需要與功能被重寫驅動程序爲Linux編寫。此外,DirectX套裝的某些部分可能會調用Windows操作系統,並且該代碼必須針對Linux機器進行重寫,而不會侵犯DirectX或Windows操作系統的複製部分。

是的,你可以編寫一個開源的API套裝,它與DirectX for Linux具有相同的功能,但是如果沒有Linux製造商的聲音和圖形驅動程序/支持的豐富知識,這將是一項非常艱鉅的任務去做。

但是,如果您的問題更多的是「我可以得到/寫些什麼能夠運行使用DirectX在Linux上運行的遊戲和程序嗎?」它的意思,簡而言之,不是由於版權侵權更可能。

-1

DirectX是一個禮節產品專爲微軟的目標,所以要做到這一點是非常不尋常的

還有其他軟件兩個部分浮現在腦海中,SDL和OpenGL

的OpenGL提供了硬件DirectX的替代品,SDL與OpenGL一起提供您期望從DirectX獲得的軟件支持

相關問題