gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:38 25 4
gpt4 key购买 nike

openGL 将纹理存储多长时间?

当您离开 Activity 时,纹理内存是否会被回收?

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

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];

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

我不想在我回到 Activity 中时重新加载我所有的纹理(比如那个人有电话),因为它真的会减慢速度。

更新:

在渲染器文档中找到此信息,它证实了@svdree 给出的以下答案:

EGL 上下文丢失在某些情况下,EGL 呈现上下文会丢失。这通常发生在设备休眠后唤醒时。当 EGL 上下文丢失时,与该上下文关联的所有 OpenGL 资源(例如纹理)将被自动删除。为了保持正确渲染,渲染器必须重新创建它仍然需要的任何丢失的资源。 onSurfaceCreated(GL10, EGLConfig) 方法是执行此操作的便捷位置。

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

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

我还发现,让您的 Activity 透明可将 openGL 上下文保留在透明 Activity 下方(这是有道理的,但仅对菜单等有帮助)。然而,我认为在 openGL Activity 之后始终让每个 Activity 都变得有点透明是可能的,从而在所有 Activity 中保留背景中的纹理(这可能是我要做的)

最佳答案

当您离开 Activity 时,您的 OpenGL 上下文将会丢失,这意味着您的所有纹理、顶点缓冲对象等都需要重新创建。这通常在 onSurfaceCreated() 中完成GLSurfaceView.Renderer 的方法类。

关于Android:OpenGL 存储纹理多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com