适用于ios和android,适用于iOS和Android的OpenGL ES差异
我有一個適用于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相同.
一切都適用于兩個平臺,但我想要充分了解正在發生的事情.任何人都可以向我解釋這兩種差異背后的理由嗎?
總結
以上是生活随笔為你收集整理的适用于ios和android,适用于iOS和Android的OpenGL ES差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elementui 按钮 表单_elem
- 下一篇: e盾网络验证源码_Laravel [me