Android opengl问题(怪异)

时间:2013-01-25 23:19:24

标签: android opengl-es textures

这是一个奇怪的。 我有一个基本的应用程序(仪表板,...)和一个GLSurfaceview,我在其中绘制3D对象和纹理。所有的运行都很漂亮但是当我回到其他活动时,嗯,截图比单词更好:

这是

之前的仪表板

Before

这是opengl: opengl

当我按下时,这是我的仪表板: enter image description here

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

你知道造成这种情况的原因是什么吗? 当我不使用纹理btw时,它不会发生。

3 个答案:

答案 0 :(得分:6)

好的,我发现了我的错误。我在用户界面上删除了纹理,通过调用我的片段mTextureManager.deleteAllTextures()上的onPause();

我通过用

删除我的纹理来解决它
mSurfaceView.queueEvent(new Runnable(){
    //delete all textures here
}

希望这会有助于其他人...

答案 1 :(得分:3)

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

我曾经遇到类似的问题,我引入了一个搞乱了开放状态的错误。然后当我去另一个活动(那是硬件加速)时,那个活动也搞砸了。在我的情况下,我必须找到我制作的open gl bug并修复它。

答案 2 :(得分:2)

您的问题可能与我的问题有关吗?请阅读以确保不是:Text only thing visible after pausing GLSurfaceView on Galaxy S3 - Text blur when moved. No button backgrounds

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

如果你想测试:在Android清单中禁用app wide硬件加速。 如果你的问题消失了,那可能与我的问题相同。阅读我对自己问题的回答,了解如何在保持硬件加速的同时解决这个问题。

<application android:hardwareAccelerated="false" ...>