0

OpenGL ES Programming Guide他们说:

总而言之,您的应用程序需要调用 glFinish 函数来确保所有先前提交的命令都从命令缓冲区中排出并由 OpenGL ES 执行。在它移入后台后,您必须避免使用 OpenGL ES,直到它移回前台。

glFinish 是否使 OpenGL ES 忽略所有进一步的函数调用?

或者你会如何阻止你的应用程序在开始转换到后台后调用 OpenGL ES 函数?

问题是,如果您使使用 GCD 串行队列触发异步绘图的计时器无效,则块仍会在进入后台的过程中完成其工作。

4

1 回答 1

2

glFinish() 将阻塞,直到之前所有对 OpenGL ES 的调用都完成了它们的功能,从而清除了挂起的任务。在你做任何截图之前调用这个函数通常很有帮助。

要在应用程序进入后台时避免 GL 调用,相当简单,它更多地取决于您实现游戏循环的方式。在我们的游戏中,我们使用一个布尔变量“isAppActive”,当应用程序进入后台状态时将触发该变量。如果此变量为 TRUE,则不会调用游戏循环中的 Draw() 函数。从而避免所有 GL 调用。

于 2013-10-07T04:10:28.793 回答