加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x-3.0 draw vs onDraw

发布时间:2020-12-14 18:58:53 所属栏目:百科 来源:网络整理
导读:我正在使用cocos2d-x v3.0并且在一些测试项目中我通过重写Node的draw方法来做一些自定义绘图,但是在DrawPrimitives示例中他们提供了类似这样的事情: void DrawPrimitivesTest::draw(){ _customCommand.init(_globalZOrder); _customCommand.func = CC_CALLB
我正在使用cocos2d-x v3.0并且在一些测试项目中我通过重写Node的draw方法来做一些自定义绘图,但是在DrawPrimitives示例中他们提供了类似这样的事情:
void DrawPrimitivesTest::draw()
{
    _customCommand.init(_globalZOrder);
    _customCommand.func = CC_CALLBACK_0(DrawPrimitivesTest::onDraw,this);
    Director::getInstance()->getRenderer()->addCommand(&_customCommand);
}

void DrawPrimitivesTest::onDraw()
{
    // drawing code here,why?
}

从读取头文件和源文件看起来这可能是将渲染命令直接发送到渲染器的某种方式,这是正确的吗?

我应该使用这种方法来进行自定义绘图吗?绘制onDraw有什么区别?

编辑:

正如@Pedro Soares所提到的,因为Cocos2D-X 3.0你不能再覆盖draw()了.你必须使用draw(Renderer * renderer,const kmMat4& transform,bool transformUpdated)代替.

将来,cocos2d-x 3.x渲染器将使用命令池进行多线程处理.

通过visit方法调用draw方法,创建新命令.当命令池执行命令时,将调用onDraw.此时,命令在单线程中执行,但在重载的onDraw方法中,您应该假设它将在另一个线程中调用以简化将来的迁移.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读