我有一个适用于iOS和
Android的OpenGL ES应用程序.大多数代码是很久以前由另一个人编写的,现在我必须维护它. OpenGL的使用看起来相当简单(游戏是2D,只使用纹理精灵以简单的方式).但我发现iOS和Android的图形代码实现存在两个主要差异:
1)iOS代码包含以下代码:
glGenFramebuffersOES(1, &m_defaultFramebuffer);
glGenRenderbuffersOES(1, &m_colorRenderbuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_defaultFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_colorRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, m_colorRenderbuffer);
而Android则没有.
2)当Android应用程序转到后台时,所有OpenGL纹理都被破坏(glDeleteTextures),并且使用eglTerminate关闭EGL.当应用程序从睡眠状态返回时,将重新初始化EGL并重新创建纹理.
iOS代码不做这些事情.它只是通过调用[m_displayLink setPaused:YES]来暂停渲染循环;
其他与OpenGL相关的代码与iOS和Android相同.
一切都适用于两个平台,但我想要充分了解正在发生的事情.任何人都可以向我解释这两种差异背后的理由吗?