j p*_*mel 6 iphone android opengl-es
在与一些同事的讨论中,我们想知道为Android或iPhone开发的OpenGL工作是否可以有效地互换,因为它们都支持规范.
或者是在两个平台之间共享OpenGL的现实更多的是一个怪癖,调整的情况,并不像人们希望的那么容易.
OpenGL实现通常由两部分组成:1.平台特定部分.这通常与创建和显示曲面有关.2. OpenGL API.对于OpenGL的具体实现,这部分在所有平台上是相同的,在Android的情况下,OpenGLES 1.0.
这意味着您的大部分OpenGL代码应该易于移植.
在C中,你可能有glLoadIdentity();
在Android上的Java中,类似gl.glLoadIdentity();
因此,对于大部分代码,您可以剪切和粘贴,然后搜索和替换"gl"之类的前缀.
现在为了有趣的部分:你真的需要小心你正在编码的版本.用于桌面的OpenGL具有OpenGLES中不存在的API.还有一些特定于每个平台的OpenGL数据类型.此外,你有1.0(例如Android)1.1(例如iPhone)2.0(例如iPhone GS)来处理.API的差异通常与额外的硬件功能有关,因此您不能编写一些简单的包装代码来模拟1.0/1.1中的2.0功能.
Android上的OpenGL ES是根据Khronos Java GLES规范JSR239完成的,并且将GL调用包含在像glinst.glBindBuffer(FloatBuffer.wrap(数据)......这样的东西上.)iPhone上的OpenGL ES是使用库存GL.h文件完成的调用看起来就像glBindBuffer(数据......)
代码将不会互换,并且会导致许多怪癖,甚至在您进入1.0 1.1和2.0 APis之间的差异之前.