繁体   English   中英

在保留EGL上下文的同时最小化OpenGL应用程序会导致巨大问题

[英]Minmizing OpenGL app while preserving EGL Context results in HUGE PROBLEM

我正在将opengl es 3.0 API与android studio ndk一起使用来创建应用。 但是我遇到了一个非常大的问题。 我已经创建了一个演示应用程序,它所做的一切都会在每一帧中将屏幕的背景颜色从白色更改为黑色,反之亦然。 因此,当我最小化此应用程序时,我仍然看到它呈现背景,主要是在屏幕的边缘,并且不是全彩色的,但仍然非常明显。 当我关闭应用程序,重新启动设备或在其上运行“杀死应用程序”时,它并不会消失。 只有恢复出厂设置才能解决此问题,因此调试起来并不容易。

这是在最小化应用程序并接收APP_CMD_TERMINATE事件时使用的相关代码:

eglMakeCurrent(engine->display,EGL_NO_SURFACE,EGL_NO_SURFACE,EGL_NO_CONTEXT);
eglDestroySurface(engine->display,engine->surface);
engine->display = EGL_NO_DISPLAY;
engine->surface = EGL_NO_SURFACE;

我已错误检查eglDestroySurface()是否成功。 并且我已放入调试消息,以确保在最小化应用程序时主绘图循环未执行。 但是问题仍然存在,我不知道该怎么办。 谢谢你的帮助。

更新:嗯,没有人回应,我仍然不知道该怎么办。 可能与线程有关吗?

更新:仍然无法确定它是什么,但是由于某种原因,它与系统用户界面混乱。 如果有人愿意与我一起学习,可以将我的整个源代码上传到某个地方,因为我真的很想能够继续使用我的游戏引擎。

可能是设备设置上的“严格模式”开发人员选项吗?

如果某个应用被阻止,则该屏幕会闪烁。

它可以解释为什么恢复出厂设置会更改行为。

在此处输入图片说明

答案不是这里的解决方案。 用户columbo的上述评论是正确的。 我已经演示了通过openGL api在3个不同的android设备以及我的Linux桌面上以高帧速率从黑色切换到白色的情况,并且在所有设备上都出现了这个问题。 所以他说的必须正确:这是LCD显示器技术本身的问题。 有趣的是,进行完全随机的颜色不会导致此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM