我熟悉 OpenGL 和 OpenGL ES 之间的基本区别,例如没有 glBegin、glEnd、没有四边形等等。
因此,我的问题不是关于这两个 API 之间的差异,而是关于编写可以在这两个 API 及其各种实现上实际工作的代码,特别是关于 ES,其中实现似乎变化更大。
自然,这意味着要符合两个 API 中都存在的功能和相同的语法,没有什么太花哨和最前沿的,OpenGL ES 2 是最低的公分母。
我熟悉 OpenGL 和 OpenGL ES 之间的基本区别,例如没有 glBegin、glEnd、没有四边形等等。
因此,我的问题不是关于这两个 API 之间的差异,而是关于编写可以在这两个 API 及其各种实现上实际工作的代码,特别是关于 ES,其中实现似乎变化更大。
自然,这意味着要符合两个 API 中都存在的功能和相同的语法,没有什么太花哨和最前沿的,OpenGL ES 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 的)。
根据 Khronos OpenGL ES 是桌面 OpenGL 的一个子集,因此要编写兼容代码,您只需要使用 OpenGL ES 文档。
引自http://www.khronos.org/opengles/
OpenGL® ES 是一种免版税的跨平台 API,用于嵌入式系统(包括控制台、电话、电器和车辆)上的全功能 2D 和 3D 图形。它由定义良好的桌面 OpenGL 子集组成
编辑:正如贾斯汀迈纳斯在评论中指出的那样,在细节方面实际上存在一些差异。David C. Bishop 的回答对此有更多信息。