OpenGL ES声称是OpenGL的一个子集,这意味着任何OpenGL ES程序理论上都可以在PC上作为常规的OpenGL运行; 然而,似乎OpenGL ES对某些函数(glOrtho
与glOrthof
)有稍微不同的命名约定。这是否重要?一个OpenGL ES应用程序能否直接在OpenGL GPU /驱动程序上工作或仅需要重新编译?
glTexImage2D
在两种情况下的工作方式相同,所以与之配合更加容易。现在,交互操作更多地是要避免功能不可用的情况。当前的OpenGL(4.x)和OpenGL ES(2.x)版本相似,但存在足够的差异,无法通过重新编译来移植代码。正如@Nicol Bolas所指出的,OpenGL中有许多功能甚至在OpenGL ES中都不存在,同时一些API的行为也略有不同。此外,平台支持也非常不同(即设置渲染上下文等)。
OpenGL ES 2.0实际上与1.x不兼容,因为模型从旧的即时模式样式(如OpenGL 2.1及更早版本中所体现的)转变为更现代的基于着色器的模型。
OpenGL v3和v4淘汰了许多过时的2.x功能,尽管主要驱动程序保留了兼容模式以继续支持这些旧版本。
OpenGL 4.x中的GL_ARB_ES2_compatibility扩展有助于将桌面版和移动版更紧密地结合在一起,以便提高可移植性。
像glOrtho
与glOrthof
之类的小差异显然很容易管理,但您需要为其他功能编写包装器。