编写OpenGL和OpenGL ES兼容代码的指南?

时间:2012-04-25 13:35:58

标签: opengl opengl-es cross-platform compatibility

我熟悉OpenGL和OpenGL ES之间的基本区别,例如:没有glBegin,glEnd,没有四边形等等。

因此,我的问题不是关于两个API之间的差异,而是关于编写实际可以在API及其各种实现上工作的代码,特别是关于ES,其中实现似乎变化更大。

当然,这意味着符合两个API中存在的功能和相同的语法,没有太多的花哨和前沿,OpenGL ES 2是最低的共同点。

2 个答案:

答案 0 :(得分:2)

根据Khronos OpenGL ES是桌面OpenGL的一个子集,因此要编写兼容代码,您只需要使用OpenGL ES文档。

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

的引用
  

OpenGL®ES是一种免版税的跨平台API,用于嵌入式系统上的全功能2D和3D图形 - 包括控制台,电话,电器和车辆。它由明确定义的桌面OpenGL子集

组成
编辑:Justin Meiners在评论中指出,在细节方面存在一些差异。 David C. Bishop的回答有更多信息。

答案 1 :(得分: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。