微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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对象. 大家都谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐