当调整 aGLKView
的大小时,会在缓冲区和 that 的上下文中发生一些幕后操作GLKView
。在执行这些幕后操作所需的时间期间,绘图GLKView
不会产生正确的结果。
在我的场景中,我启用了GLKView
that setNeedsDisplay
,因此每当我需要在屏幕上更新它的内容时,我只需-setNeedsDisplay
调用
GLKView
. 我是GLKView
用来绘制图像的,所以如果我需要绘制不同大小的图像,我还需要更改GLKView
.
问题:当我更改GLKView
并调用setNeedsDisplay
该视图的大小时,屏幕上的结果不正确。这是因为在GLKView
尝试绘制新图像之前,尚未完成由新尺寸更改调用的幕后操作。
我通过调用:performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0
而不是仅仅setNeedsDisplay
在GLKView
. 这基本上强制主线程在调用之前等待所有幕后的 openGL 操作完成setNeedsDisplay
。虽然这工作正常,但我想知道是否有更好的解决方案。例如,是否有一个 openGL 调用让线程在继续之前等待所有 openGL 操作完成?