android纹理存储,Android:OpenGL存储纹理多长时间?

openGL存储纹理多长时间?

离开活动时纹理内存是否会被回收?

例如,如果我有以下代码:

mGL.glGenTextures(1, mTextures, 0);

mGL.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[0]); // A bound texture is

// an active texture

//mGL.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, bitmap.getWidth(),bitmap.getHeight(), 0, GL10.GL_RGBA, GL10.GL_FLOAT, textures);

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0,GL10.GL_RGBA, bitmap, 0);

// create nearest filtered texture

mGL.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,

GL10.GL_LINEAR); // This is where the scaling algorithms are

mGL.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,

GL10.GL_LINEAR); // This is where the scaling algorithms are

mGL.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,

GL10.GL_CLAMP_TO_EDGE);

mGL.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,

GL10.GL_CLAMP_TO_EDGE);

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

//bitmap.recycle();

Log.v("GLSurfaceView", "Loading Texture Finished");

return mTextures[0];

哪些更改会使返回值无效?

当我回到活动中时(我说这个人打过电话),我不想重新加载所有纹理,因为它确实减慢了速度.

更新:

在Renderer文档中找到此信息,该文档确认了@svdree下面给出的答案:

EGL上下文丢失在某些情况下,EGL渲染上下文将丢失.这通常发生在设备进入睡眠状态后唤醒时.当EGL上下文丢失时,将自动删除与该上下文关联的所有OpenGL资源(例如纹理).为了保持正确渲染,渲染器必须重新创建它仍然需要的任何丢失的资源.onSurfaceCreated(GL10,EGLConfig)方法是一个方便的地方.

这意味着纹理与EGL上下文相关

自发布此问题以来,我尝试通过让我的活动从具有对自定义GLRenderer的引用的基本活动继承来解决问题.基本上,我可以向前传递OpenGLSurface View(即使它在一个活动中实例化并在下一个活动中使用它),但是一旦它通过其关闭程序,它就不会再次启动.

我还发现,使您的活动透明可以保留透明活动下面的openGL上下文(这是有道理的,但仅对菜单等有帮助).但是我想在openGL活动之后总是可以进行所有活动,只需要透明一点,从而在所有活动中保留背景纹理(这可能就是我要做的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值