DirectX和OpenGL如何抉擇?

使用的是c++11語言,遊戲框架想用Cocos2d-x,那麼DirectX和OpenGL這兩者之間該如何選擇?


謝謝邀請。

首先如果你是想要利用引擎來製作遊戲,其實DirectX 和OpenGL和你沒什麼關係,因為他們都是底層的內容,就如Frank 說的,他們會根據你的平台來選擇。

如果你是想做iOS應用,我推薦你學習OpenGL,

你想做Windows的應用,我建議你學Directx(好吧這是廢話)

你使用C++11的標準,那麼可以嘗試學習DirectX 9 或者11,其實他們歸根結底就是《計算機圖形學》那麼,你需要了解的是數學知識(包括但不限於線性代數、離散數學)、設備知識、基本圖元、像素格式、採樣、渲染流水線等等內容。

上面兩位的說法,你應該是不了解他們的關係,我簡單描述一下。

DirectX是微軟的多媒體編程介面,在Windows的平台下,配合支持DX的高端顯卡能把遊戲場景的特效等等發揮得淋漓盡致,而OpenGL是一個跨平台的編程介面,是硬體無關的編程介面。

那麼通過上面的描述,希望你可以確定你想要開發的平台,選擇對應的介面。

當然如果你不了解他們,我推薦你先學習OpenGL。

如果你用引擎的話,做好表層的應用,遊戲邏輯即可。

底層的內容可以選擇性地了解,多看一下cocos2d-x官網的討論和API範例即可。


等下,cocos2d-x 不是已經做好封裝了嗎?


你先想明白你是要做遊戲還是做遊戲引擎, 人的精力和時間是有限的


就算你要跨平台,只要你的大部分用戶都在Windows/XBox上,不管你用不用OpenGL,你的Windows/XBox版本為DirectX優化是勢在必行的。

如果你沒有Windows/XBox用戶,那你也只有OpenGL可以選了。


vczh的回復軟文傾向明顯。

答案都不夠滿意,我來說吧。

1.移動端也包括很多家用機上,OpenGLES比D3D強勢多了。

2.Cocos引擎現在還沒有做到比較好的渲染層剝離。自己替換有成本。

3.相信我,遊戲賺到足夠多的錢之後,再考慮大規模優化吧。其他時候對付一下就行。


cocos2d-x底層會跟據你選擇的平台來切換是基於Directx或OpenGL ES,開發者不用管。

詳見

https://msopentech.com/blog/tag/cocos2d-x/


會了OpenGL再學DirectX,或者會了DirectX再學OpenGL就不難了。


DirectX是一整套,含圖形,聲音,控制器,網路等

OpenGL是單個圖形,你還得找其他的比如聲音要openal


用Cocos2d-x這種事情不需要你操心。而且面向移動端的現在基本都是opengl-es

自己寫引擎,你需要對圖形api做抽象,根據平台寫渲染器


推薦閱讀:

unity3d里的Surface shader中的surf,LightingName,finalColor,到底屬於渲染管線的哪個階段?
「渲染地球」引擎實現的原理可能是什麼?
《Manifold Garden》中的模型描邊是怎麼實現的?
如何進一步學習 shader (CG) 的知識?
在頂級遊戲開發的過程中需要怎樣的編程實力?

TAG:OpenGL | Unity遊戲引擎 | C | Cocos2d-x |