GLSurfaceView中GL相关资源销毁问题

1. YY下传统的GLUT框架

没有context概念,Main函数,Display,mouse,keyboarrd,reshape,这些回调函数中都可以直接调用OpenGL命令。

纹理等gl相关资源需要自己管理,及时释放。从而防止显存不足,gl资源分配失败。。。

2. Android GLSurfaceview

gl的context作用域只局限在GLSurfaceView.Renderer的onSurfaceCreated,onSurfaceChanged,onDrawFrame 三个函数中。其他函数都是UI线程中调用,如view的onPause,onResume这类。

在这里调用会报如下错误:

02-06 10:00:51.318: E/libEGL(4458): call to OpenGL ES API with no current context (logged once per thread)

3. 纹理等GL资源释放情况

不需要自己释放,android自己管理。Activity的onPause调用了GLSurfaceView::onPause,此时只需要将所有缓存的gl对象句柄清零,而不需要显式调用glDeleteXXX函数释放。例如纹理不需要glDeleteTextures释放,因为此时在UI线程中。下次onResume进入,创建方式两种:

  • 静态创建,在Renderer::onSurfaceCreated函数中,预创建所有需要纹理,各种XXO对象。关于该函数的描述:

    Since this method is called at the beginning of rendering, as well as every time the EGL context is lost, this method is a convenient place to put code to create resources that need to be created when the rendering starts, and that need to be recreated when the EGL context is lost. Textures are an example of a resource that you might want to create here.
  • 延迟到onDrawFrame中,发现纹理不可能用时重新动态创建。

ref : http://stackoverflow.com/questions/4925065/how-to-detect-when-textures-are-destroyed

时间: 2024-10-14 10:50:07

GLSurfaceView中GL相关资源销毁问题的相关文章

.NET中使用Memcached的相关资源整理(转)

Memcached官方站点:http://www.danga.com/memcached/ Memcached Win32 1.2.6下载:http://code.jellycan.com/memcached/ 安装帮助:Windows下的.NET+ Memcached安装 Memcached .NET客户端: 1).NET memcached client library 下载地址:https://sourceforge.net/projects/memcacheddotnet 相关文章:分布

.NET中使用Memcached的相关资源整理

NET中使用Memcached的相关资源整理 Memcached官方站点:http://www.danga.com/memcached/ Memcached Win32 1.2.6下载:http://code.jellycan.com/memcached/ 安装帮助:Windows下的.NET+ Memcached安装 Memcached .NET客户端: 1).NET memcached client library 下载地址:https://sourceforge.net/projects/

vue-cli 项目中绝对路径引用的相关资源 npm run build 后 打开页面报404错误

在项目中.通过vue-cli 搭建的项目,npm run dev时,以绝对路径引用的相关资源在npm run build 后,页面打开报相关资源404错误: 解决方法如下: 打开build/utils.js,在图中相应位置加入红框内容,其中值可能会有不同,若不同,自己配置成相应的即可. 原文地址:https://www.cnblogs.com/xzma/p/9162584.html

Android插件化(三)加载插件apk中的Resource资源

Android加载插件apk中的Resource资源 简介 如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源码中发现,它有一个私有方法addAssetPath,只需要将apk的路径作为参数传入,我们就可以获得对应的AssetsManager对象,然后我们就可以使用AssetsManager对象,创建一个Resources对象,然后就可以从Resource对象中访问apk中的资源了.总结如下: 1.新建一个AssetManag

NLP相关资源

一 NLP相关资源站点 Rouchester大学NLP/CL会议列表 一个非常好的会议时间信息网站,将自然语言处理和计算语言学领域的会议,按照时间月份顺序列出. NLPerJP 一个日本友好人士维护的网站,经常对NLP近来热点进行评论,可以受到启发. 初学者如何查阅自然语言处理(NLP)领域学术资料 初学者如何查阅NLP领域学术资料,作者为清华大学计算机系助理研究员刘知远.另外,刘还曾经翻译过<机器学习那些事儿>一文,原文刊登在ACM Communication上,刘翻译后发表在计算机学会通讯

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系 一.OpenGL OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux).实用工具库(glut),窗口库(glx.agl.wgl)和扩展函数库等. gl是核心,glu是对gl的部分封装.glx.agl.wgl 是针对不同窗口系统的函数.glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代.).扩展函数库是硬件厂商为实现硬件更新利用Op

搭载Azure的开发环境及相关资源的使用输入日志标题

搭载Azure的开发环境及相关资源的使用 从http://azure.microsoft.com/zh-cn/downloads/?rnd=1下载azure开发工具,Visual Studio 2013 update 4 ; 安装好之后,下载Azure SDK, 下载后,通过 Microsoft Web平台安装程序来获得并安装它们.接下来,你去可以微软下载官网,下载试用版的SQL-Server 2014 : 现在我们就可以导入Azure 订阅了: 首先,从https://manage.windo

(原)Struts 相关资源下载

官网:http://struts.apache.org 点击[Download],进入页面如下,可以看到下载的资源: 点击[struts-2.3.20-all.zip],就能获取Struts2项目所有的相关资源. Struts2项目的目录结构中主要包含了4个目录:apps.docs.lib 和 src: apps:存放了所有 Struts2 的实例项目 位于 apps 目录下的所有war都是部署到 Web 服务器中直接运行的 Web 应用. 这些 Struts2 的示例项目对学习 Struts2

C++相关资源

http://www.cnblogs.com/xi52qian/p/4186983.html语言ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committeehttp://www.open-std.org/jtc1/sc22/wg21/ C/C++ Referencehttp://www.cppreference.com/ The C++ Resources Networkhttp://www.cplusplus.com/ C++ FAQ LITE —