為什麼部分 PC 遊戲開發者更喜歡 DirectX 而非 OpenGL ?

如題,發現絕大多數windows上的遊戲都是用Direct3D寫的,雖然說的確在windows上親兒子最方便,但是OpenGL也不算難用。如果考慮性能問題的話,Vulkan和Direct3D的性能已經相當並且Vulkan遊戲可以很容易的移植到其他平台,然而開發者們卻仍然選擇Direct3D。

-----

2017年6月5日更新

之前的問題題目寫的不太好,因為感覺主要是pc遊戲開發者更喜歡用DX,畢竟許多專業性很強的軟體都用了OpenGL..


你能先搜索一下再問問題嗎

Windows 支持 DirectX 和 OpenGL,為什麼大多數 PC 遊戲還是 DirectX 開發?


vulkan剛起步,坑多吧。而且我沒記錯的話,A卡N卡新驅動上了vulkan,但intel的是一直沒動靜好像。

至於dx和gl的選擇……intel的GPA在windows下只能debug dx,vs自帶的debug也是dx的,NVIDIA大概也是傾向於dx。

OpenGL這個,桌面版本的話N卡一般不用愁,功能又全又標準,I卡的話版本不一,bay trail支持到4.0,haswell新驅動到4.3……如果想要通用一點改用es版本的話,功能又比桌面的少,而且有些顯卡還不見得支持。angle的話我記得還沒做到es 3.0……

而DX的話,雖然也有版本之分,但各個版本劃分了特性支持的等級,相比之下應該不那麼零碎。

總的來說,工具多的平台會收到青睞。


先問是不是,在問為什麼。

有統計數據嗎?

不要說絕大多數了,就連PC平台DX也沒有能夠佔據到敢說「絕大多數」這四個字啊

更何況Android和iOS平台的手游,你用dx?exm?


說幾點原因:

1.pc遊戲,windows平台占絕對的大頭;

2.d3d生態要好於gl, 舉幾個例子:d3d基本安裝vs, windows sdk就能開始開發,而gl則需要自己折騰,安裝好幾個庫,配置開發環境比較麻煩;d3d可以在vs里調試,而gl要藉助第三方工具;

d3d驅動的質量在windows 下有保證,而gl驅動的質量參差不齊;遊戲開發的書籍基本選擇d3d, 基於gl的很少;

3.在ms一家的掌控下,d3d標準更新迭代領先於gl, 從技術上講,d3d也有一定優越性。

4.一般來說,大型跨平台引擎都以d3d為藍本,抽象封裝,如ue有rhi抽象層,而ce是把gl直接封裝成d3d api。跨平台對於專業人士來說,不是太大的事。


開發者仍然選擇Direct3D,是哪些開發者?開發哪些東西?

沒有數據的結論都是瞎扯淡,你以為你以為的是你以為的?

除了萎縮的PC市場,還有那麼多設備和市場,誰規定一定要用封閉的Direct3D了。尤其是移動端市場,等同於D3D9和11自然有OpenGL ES 2和3撐腰,你也沒得選。說工具不好用的玩過移動端開發嗎,除了PC上的工具還有那麼多debugger,尤其是IOS上的開發工具,你都用過玩過了?實在不行像Android這種開啟日誌模式總歸沒問題吧?移動端使用core profile大部分不會有什麼問題的,跑不起來的先搞清楚core profile。開發了這麼久,沒見有太多問題。

類D3D12自然有vulkan和metal撐腰,有你微軟蜀黍什麼事。Vulkan我已經在Windows上和Fedora上愉快地玩耍了,工具還特么爽,介面設計層面就帶debugger和validation layer,要移植分分鐘移植了,想Windows 7上玩就玩,想Windows 10上玩就玩,想Fedora上玩就玩,想Android上玩就玩。你微軟蜀黍的D3D能辦到嘛?

還有就是一個Spec都不開放,大家要玩還要簽訂保密協議的,搞得神神秘秘的好像是個好東西,爾等凡人屁民哪裡有資格看,其他的廠商還不帶你玩。這種高貴的含著金鑰匙的拉屎都是香的介面,也就只能在微軟蜀黍的平台上玩了,而且移動端那個系統還自行作死,還好當初去微軟體驗店,銷售人員及其傲慢我沒買,不然用個支付寶我都得感動的掉眼淚。

移動端現在多賺錢,介面搞得多了也好,攪渾了市場,技多不壓身,不然靠啥吃飯,況且還沒那麼好學,不搞點技術壁壘怎麼行。沒有任何東西是聖經,不要搞教派主義和意識形態,哪個能掙錢用哪個,實用主義是王道,不要平台一倒或者更新換代就失業。


首先拋開莫名其妙的宗教信仰不談。主要還是歷史原因。

早期D3D大規模進入可編程管線時代的時候(2002年前後),OpenGL還止步不前一團混亂,到現在OpenGL已經有點積重難返的味道了,所以才有了最近誕生的Vulkan,用來替代混亂不堪垂垂老矣的OpenGL,所以不是D3D強大,而是OpenGL無能;另一方面,那個時代,Windows PC佔據了超過90%的市場份額,智能手機還只是一個概念,所以開發者只要抓住Windows市場就能吃得很飽。兩者結合,那個時代的遊戲特別喜歡用D3D,以至於顯卡分代都是以DirectX的版本來的。


1.d3d的API設計大體上比OpenGL要優秀一些。

2.Windows的d3d的性能比OpenGL要優秀。

3.Windows有微軟爸爸幫你測試兼容性。OpenGL有著明顯不足。

4Windows里DirectX有全套的工具鏈,OpenGL也有不少差距。

至於題主提到的vulkan個人感覺基本約等於dx12。而且資料少。前途未卜(也可能會像OpenGL一樣互相扯皮,各種庫n年不更新,希望別走OpenGL的老路)。所以Windows上也沒有使用vulkan的必要。


不僅如此呢,全世界的開發者,絕大多數的絕大多數還喜歡在windows上做開發呢!

一個道理,既有市場因素,也因為微軟從API介面到開發工具都是對開發者極其友好,充滿善意的:-)

以前是,現在更是,強烈安利 VS Community+TFS(Git)+SQL 2016 Express,優秀+正版+免費。


因為你在 DirectX得圈子裡

其實 現在得主流 已不是DirectX了。。。。

而是移動開發


突然想到了暴雪,


大夥投個票唄!OpenGL +1


你都說了Windows上面的遊戲,既然為windows設計的遊戲,自然選擇MS的d3d了。

你可知現在都是移動應用。

而我的Linux遊戲我沒發現一個d3d的


移動平台開發並不知道什麼叫DX


d3d微軟的文檔很多,寫得也很棒


樓中有人說明了

遊戲開發?

圖形開發?

圖形也有很多開發方向的


推薦閱讀:

TAG:遊戲開發 | 編程 | OpenGL | Direct3D | Vulkan |