OpenGL ES 和 Unity3D 是什麼關係?


OpenGL ES是Unity在現在的Android、ios等類似設備上用來渲染的底層庫,是OpenGL的一個子集。OpenGL ES在渲染能力、功耗設計中都考慮了移動設備的特殊性,所以現在的移動設備都是基於OpenGL ES 1.1或者2.0來渲染。

在Windows(MAC、Linux)上,Unity會根據自己跑的平台來決定用DX還是OpenGL,因為是你來做,也會想著盡量能把最好的硬體都利用上,對吧?!

所以,OpenGL ES跟Unity的關係也就很明了,Unity會根據不同的運行環境,選擇不同的渲染庫,OpenGL ES是其中的一個庫,而已。


OpenGL ES 是一套專為嵌入式設備設計的三維圖形開發介面標準, 脫胎於 OpenGL. OpenGL 家族以及他的主要競爭對手 Direct3D 都只是一套 API(說白了就是N個函數)標準, 顯卡廠商根據標準開發出驅動,有了驅動 (當然還有SDK) 我們程序員就可以開始對顯卡編程製作出絢麗的3D遊戲.

程序員在開發遊戲過程中發現不同遊戲都要實現相同功能, 比如資源管理, 聲音播放, 渲染. 於是很自然程序員就開始製作自己的工具完成這些重複工作, 遊戲引擎就誕生了. 其中遊戲引擎的一個工作就是抽象 OpenGL , D3D 這些底層API, 你再也不需要分別為OpenGL, D3D 編碼, 只要調用引擎的抽象介面, 剩下的就交給引擎了.

你用 Unity 發布 Android, iOS 的遊戲, 那他就綁定和調用 OpenGL ES

發布 PC 遊戲, 就是D3D 或者 OpenGL


謝邀。

unity3d在移動平台上主要通過opengl es來調用圖形設備。

這裡夾帶點私貨。我覺得其實可以直接angle這樣在win下也可以用gl linked api去使用dx了。(逃


OpenGL ES可以認為是OpenGL的子集,主要用於移動端的設備。從中衍生出來的還有webGL,主要用於瀏覽器端的渲染。

OpenGL和DirectX是目前比較通用的底層庫,各大顯卡廠商也會為此在不同的顯卡上編寫對應的driver,這些driver負責做最終的機器specific的實現。

Unity是一個引擎,引擎裡面包含很多模塊,比如渲染模塊,聲音模塊,物理模塊等等。這裡的渲染模塊在上層會有個通用的API層供調用,而無需管底層到底是跑了gl的實現還是dx的實現。


在移動設備上圖形渲染引擎用的是OpenGL,所以在移動設備上Unity的引擎調的就是OpenGL,但是PC上用的的DX,所以PC上Unity就不調OpenGL。


推薦閱讀:

openGL與界面兼容?
為什麼ShaderToy選擇了GLSL?
計算機圖形學中,面的最小基本單位為什麼一般是三角形?
操作系統是如何管理GPU等計算資源的?
光照和陰影演算法該如何優化?

TAG:OpenGL | Unity遊戲引擎 | Android |