解决Mojave中的OpenGL问题

macOS 10.14 Mojave、iOS 12和tvOS 12中开始抛弃OpenGL,鼓励转到Matel。这是好事,毕竟后者的效率确实更高。但转换的代价是很高的,是需要时间的,也伴随着磨人的过程。

工作的iMac更新到Mojave后,编译项目时发现画面渲染不正常,一想就是踩了坑。搜索了好一会儿,尝试了各种办法终于能用了,在这记录一下。

OpenGL.framework没有变,变的是NSOpenGLContext,它的某些改变导致GL的渲染时机发生了变化,简单说就是该画的时候不画了。NSOpenGLContext中有个update方法,要想正常渲染画面就得在开始渲染前调用一次,特别是采取“非事件驱动”方式的OpenGL程序。对于Cocos2d-x来说就是在CCDirector的mainLoop之前;原生的可以覆写setLayer,在[super setLayer]之后调用。

使用GLUT的项目也有解决方法,只需要在glutInitWindowSize(size, size)之后调用glutReshapeWindow(size*2, size*2),再在display最后调用glutPostRedisplay就好了。

以上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容