这是一个奇怪的。 我有一个基本的应用程序(仪表板,...)和一个GLSurfaceview,我在其中绘制3D对象和纹理。所有的运行都很漂亮但是当我回到其他活动时,嗯,截图比单词更好:
这是
之前的仪表板
这是opengl:
当我按下时,这是我的仪表板:
正如您所看到的,图像也消失了。我运行4.0+所以我想这是因为android使用opengl绘制元素,因为它在我的2.2设备上没有这样做。
你知道造成这种情况的原因是什么吗? 当我不使用纹理btw时,它不会发生。
答案 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" ...>