我有一个使用OpenGL ES的视图的视图控制器。当视图控制器被释放时,是否还有其他工作需要完成以关闭OpenGL?或者一旦视图控制器不存在,手机是否会切换到“OpenGL模式” - 如果存在这种情况?OpenGL ES需要“关闭”吗?
2
A
回答
3
没有真正的“OpenGL模式”。在iOS上,创建一个上下文通过EAGLContext类中做你的渲染:
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
在此背景下,你需要至少设置一个帧缓冲对象(FBO)和它连接到CAEAGLLayer你做你的实际的绘图:
[EAGLContext setCurrentContext:context]
,然后该图形是在呈现到您的FBO:
glGenFramebuffers(1, &viewFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, viewFramebuffer);
glGenRenderbuffers(1, &viewRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];
你做任何的OpenGL ES绘制之前指定当前上下文传送到CAEAGLLayer,这会导致它显示在屏幕上。这个内容是与你的其他界面合成的,所以OpenGL绘图模式没有真正的改变,它只是你界面中的另一个视图。
当您完成托管OpenGL内容的视图时,不需要关闭任何内容,但清理所有已使用的资源将是一个不错的主意。使用glDeleteFramebuffers()
和glDeleteRenderbuffers()
来清理你的FBO,glDeleteTextures()
对于你使用的任何纹理,glDeleteBuffers()
对于任何VBOs等。
相关问题
- 1. 我需要关闭IAsyncOperation吗?
- 2. 我需要关闭流吗?
- 3. 我需要Javascript关闭吗?
- 4. OpenGL ES:需要OpenGL ES(1.x和2.0)API列表
- 5. iOS - 需要OpenGL ES 2.0进行升级?
- 6. 熊猫需要关闭连接吗?
- 7. MS Access:.RecordSetClone后需要关闭吗?
- 8. 我需要关闭一个std :: fstream吗?
- 9. OpenGL ES glBlendFunc硬件需求
- 10. 管道关闭不需要关闭
- 11. OpenGL向后兼容OpenGL ES吗?
- 12. OpenGL或OpenGL ES
- 13. 需要多久Tomcat关闭?
- 14. Groovy XmlParser - >需要关闭?
- 15. Opengl ES,问题,同时渲染关闭对象
- 16. android:在设备旋转时关闭opengl ES上下文切换
- 17. OpenGL vs OpenGL ES和OpenGL 1.x vs OpenGL 2.0要学什么?
- 18. OpenGL到OpenGL-ES - glRectf()
- 19. 从OpenGL ES 1.1过渡到OpenGL ES 2.0
- 20. iOS OpenGL ES与Android OpenGL ES兼容?
- 21. 混合OpenGL ES 1和OpenGL ES 2
- 22. 在OpenGL ES中绘制立方体需要多少顶点?
- 23. OpenGL ES:顶点结构是否需要x,y和z?
- 24. 在OpenGL ES 2.0/GLSL中,您需要哪些精度说明符?
- 25. 关闭数据库至关重要吗?
- 26. 使用GLKit的按需OpenGL ES呈现
- 27. OpenGL ES难以显示文本吗?
- 28. OpenGL ES 2.0 X轴被翻转了吗?
- 29. OpenGL ES 1.1在iOS中会过时吗?
- 30. iOS,iPhone,iPad(OpenGL ES)支持PBuffer吗?
感谢Brad!这就是我的想法,但我想从专业人士那里听到。 – jmosesman 2011-05-11 04:48:29