ios – 调整GLKView的大小

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

在我的场景中,我有一个启用了setNeedsdisplay的GLKView,所以当我需要在屏幕上更新它的内容时,我只需要调用-setNeedsdisplay
GLKView.我正在使用GLKView绘制图像,所以如果我需要绘制不同大小的图像,我还需要更改GLKView的大小.

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

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

解决方法

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...