调整GLKView的大小

时间:2011-10-20 00:20:18

标签: ios opengl-es ios5 opengl-es-2.0 glkit

调整GLKView的大小时,会在GLKView的缓冲区和上下文上发生一些幕后操作。在执行这些幕后操作所花费的时间内,绘制到GLKView不会产生正确的结果。

在我的方案中,我有GLKView已启用setNeedsDisplay,因此每当我需要在屏幕上更新其内容时,我只需在其上调用-setNeedsDisplay GLKView。我正在使用GLKView来绘制图像,因此如果我需要绘制不同大小的图像,我还需要更改GLKView的大小。

问题:当我更改GLKView的大小并在该视图上调用setNeedsDisplay时,屏幕上的结果不正确。这是因为在尝试绘制新图像之前,GLKView没有完成新尺寸更改所调用的幕后操作。

我通过在performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0上致电:setNeedsDisplay而不仅仅是GLKView找到了解决方法。这基本上迫使主线程在调用setNeedsDisplay之前等待所有幕后的openGL操作完成。虽然这项工作正常,但我想知道是否有更好的解决方案。例如,是否有一个openGL调用使线程等待所有openGL操作完成后再继续?

1 个答案:

答案 0 :(得分:9)

解决方案是在CIContext调整大小后重置GLKView对象 大家好,谢谢你!