2012-04-25 57 views
7

我熟悉的OpenGL和OpenGL ES,例如基本區別沒有glBegin,glEnd,沒有四邊形等等。編寫OpenGL和OpenGL ES兼容代碼指南?

所以我的問題是不是關於兩種API,但關於編寫代碼的,可以在兩個API及其各種實現實際的工作,特別是關於ES,其中實現似乎改變更多的差異。

自然地,這意味着符合該都存在於兩個API和相同的語法,沒有什麼太花哨和切削刃的功能,使用OpenGL ES 2爲最小公分母。

+0

您可能會發現有趣的閱讀[MaliOpenGLESEmulator(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0511c/BABBIBEA.html)文檔。這是一個OpenGL ES模擬器(用於MAC/PC)將來自OpenGL ES的調用轉換爲OpenGL。他們列出了GL 2.0和GLES 2.0之間差異的一些細節。就像GL中定點數據的缺乏(顯然)一樣,着色器精度說明符與其他一些小東西有關。 – kerim 2012-12-29 06:36:00

回答

2

據Khronos的ES是桌面OpenGL子集,所以寫代碼兼容的,你只需要使用OpenGL ES文檔。

引自http://www.khronos.org/opengles/

OpenGL®ES是免版稅的,跨平臺的API,用於全功能2D和3D圖形的嵌入式系統 - 包括主機,手機,家電和汽車。它包含明確的桌面OpenGL的子集

編輯:正如Justin Meiners在評論中指出的那樣,實際上在細節方面存在一些差異。 David C. Bishop的回答有關於此的更多信息。

+0

這是不正確的。雖然大多數代碼將不會改變它們的兼容性問題。 – 2016-06-18 19:09:41

+0

@JustinMeiners:我很好奇那些記錄的差異或實施中的錯誤?我還沒有發現任何這些兼容性問題,並且khronos文檔仍使用「子集」一詞。如果它實際上並不是一個嚴格的子集,我想更新我的答案。 – 2016-10-19 21:31:05

+0

差異的一些示例是着色器精度限定符,保證大小的差異。如果您在另一個答案中查看文檔ARB_ES2_compatibility,則會描述爲實現兼容性而必須進行的所有更改。 – 2016-10-23 18:51:22

2

您可能感興趣的新的OpenGL ES的兼容性擴展ARB_ES2_compatibility(添加到核心在OpenGL 4.1)

當然實際使用的擴展需要支持較新的4.1桌面OpenGL的,但你可以通過他們閱讀和看什麼需要在桌面上獲得ES支持,並儘可能避免使用ES代碼。雖然可能有些東西與舊版桌面OpenGL版本不兼容,但主要是一些着色器,比如浮點精度。

還有ARB_ES3_compatibility(在OpenGL 4.3的核心),但它可能是安全的忽視,因爲它是對的OpenGL ES 3.0)。