6

这是一个奇怪的。我有一个基本应用程序(仪表板,...)和一个 GLSurfaceview,我在其中绘制 3D 对象和纹理。一切都很顺利,但是当我回到其他活动时,嗯,截图胜过文字:

这是之前的仪表盘

前

这是opengl: opengl

当我回击时,这是我的仪表板: 在此处输入图像描述

如您所见,图像消失了,文字也消失了。我在 4.0+ 上运行,所以我想这是因为 android 使用 opengl 绘制元素,因为它在我的 2.2 设备上没有这样做。

你知道是什么原因造成的吗?顺便说一句,当我不使用纹理时,它不会发生。

4

3 回答 3

6

好的,我发现我有什么问题。我通过调用我的片段来删除UI Thread上的纹理mTextureManager.deleteAllTextures()onPause();

我通过删除我的纹理来解决它

mSurfaceView.queueEvent(new Runnable(){
    //delete all textures here
}

希望这会帮助其他人......

于 2013-01-26T14:52:06.067 回答
3

如果您正在使用纹理和顶点缓冲区,我相信当您离开视图时它们会被清除。如果您收到 SurfaceDestoyed 或 SurfaceCreated 调用,那么我相信您必须重新创建纹理和 vbo 并将它们重新加载到显卡。

有一次我遇到了类似的问题,我引入了一个搞砸了 open gl 状态的错误。然后,当我进行另一项活动(硬件加速)时,该活动也一团糟。就我而言,我必须找到我制作的 open gl 错误并修复它。

于 2013-01-25T23:24:40.917 回答
2

你的问题可能和我的有关吗?阅读以确保它不是:在 Galaxy S3 上暂停 GLSurfaceView 后仅显示文本 - 移动时文本模糊。没有按钮背景

我的问题是在 UI 线程上执行 openGL 功能,这破坏了用于硬件加速的 openGL 上下文。

如果要测试:在 android 清单中禁用硬件加速应用程序范围。如果你的问题消失了,那很可能是我遇到的同样的问题。阅读我对自己问题的回答,了解如何在保持硬件加速的同时解决此问题。

<application android:hardwareAccelerated="false" ...>
于 2013-08-16T22:03:31.753 回答