我有一個使用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. 我需要Javascript關閉嗎?
- 2. 我需要關閉流嗎?
- 3. 我需要關閉IAsyncOperation嗎?
- 4. OpenGL ES:需要OpenGL ES(1.x和2.0)API列表
- 5. OpenGL ES 2.0 - 性能/最優化需要?
- 6. Android地圖API需要OpenGL ES 2.0
- 7. iOS - 需要OpenGL ES 2.0進行升級?
- 8. 我需要關閉套接字嗎?
- 9. MS Access:.RecordSetClone後需要關閉嗎?
- 10. 熊貓需要關閉連接嗎?
- 11. 需要關閉JUL的其他FileHandler嗎?
- 12. OpenGL ES glBlendFunc硬件需求
- 13. OpenGL向後兼容OpenGL ES嗎?
- 14. 管道關閉不需要關閉
- 15. OpenGL或OpenGL ES
- 16. 需要多久Tomcat關閉?
- 17. 需要關閉會話
- 18. Groovy XmlParser - >需要關閉?
- 19. OpenGL vs OpenGL ES和OpenGL 1.x vs OpenGL 2.0要學什麼?
- 20. Opengl ES,問題,同時渲染關閉對象
- 21. OpenGL到OpenGL-ES - glRectf()
- 22. 從OpenGL ES 1.1過渡到OpenGL ES 2.0
- 23. 混合OpenGL ES 1和OpenGL ES 2
- 24. iOS OpenGL ES與Android OpenGL ES兼容?
- 25. 在OpenGL ES 2.0/GLSL中,您需要哪些精度說明符?
- 26. OpenGL ES:頂點結構是否需要x,y和z?
- 27. OpenGL ES 1.1 Android Mipmap紋理上不需要的黑色輪廓
- 28. 在Android應用程序中需要OpenGL ES 2
- 29. 在OpenGL ES中繪製立方體需要多少頂點?
- 30. 是學習WebGL所需的OpenGL或OpenGL ES的先驗知識嗎?
感謝Brad!這就是我的想法,但我想從專業人士那裏聽到。 – jmosesman 2011-05-11 04:48:29