我正在使用cocos2d-x v3.0并且在一些测试项目中我通过重写Node的draw方法来做一些自定义绘图,但是在DrawPrimitives示例中他们提供了类似这样的事情: void DrawPrimitivesTest::draw(){ _customCommand.i
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方法中,您应该假设它将在另一个线程中调用以简化将来的迁移.