以前在MFC上也试过子线程用gdi绘图,的确是会报错。
当时看书说不能在子线程操作cocos2d-x的图形对象,所以我也一直没有尝试。
然后昨晚试了一下,发现我在子线程创建一个Sprite可以正常显示。
然后把程序移植到安卓上,也没问题。
我的cocos2d-x是3.3rc0的,线程用的是std::thread。
是因为3.x的渲染机制和2.x的不一样了才支持子线程操作图形对象了么?
GL线程就是子线程吧,只要在GL线程里调用GL的方法就没问题。
不一定出错,但是会早晨内存泄漏的
继承自 Ref 类的子类都是通过引用计数来自动释放内存的,不是线程安全的
原来如此,那也就是说图形的操作还是要在主线程进行
然后我目前了解到子线程通知主线程的方法,是子线程接到数据后,把数据装入std::vector中,然后主线程开个计时器,不断遍历这个vector,有数据时就取出来。
说实话,感觉挺别扭的,MFC似乎可以用PostMessage在线程之间传递消息,那么cocos2dx中有没有好点的方法呢?
那个CCNotificationCenter据我所知并不是线程安全的。
你查查这个函数,我知道有,没用过
Director::getInstance()->getScheduler()->performFunctionInCocosThread(&, this]{});
— Begin quote from ____
引用第4楼geekgaoyang于2015-02-28 12:25发表的 回 3楼(karasu) 的帖子 :
你查查这个函数,我知道有,没用过
Director::getInstance()->getScheduler()->performFunctionInCocosThread(&, this]{}); http://www.cocoachina.com/bbs/job.php?action=topost&tid=286302&pid=1248197
— End quote
谢谢,我试试