调整GLKView的大小

spy*_*art 6 opengl-es ios opengl-es-2.0 ios5 glkit

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

在我的场景中,我GLKView已经setNeedsDisplay启用了一个,因此无论何时我需要在屏幕上更新它的内容,我只需要调用-setNeedsDisplayGLKView.我正在使用GLKView绘制图像,所以如果我需要绘制不同大小的图像,我还需要更改图像的大小GLKView.

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

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

spy*_*art 9

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

  • 我可以拥抱你 (2认同)