我使用了cocos2d-X 3.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?
}
Run Code Online (Sandbox Code Playgroud)
从读取头文件和源文件看起来这可能是将渲染命令直接发送到渲染器的某种方式,这是正确的吗?
我应该使用这种方法来进行自定义绘图吗?什么之间的区别draw
的onDraw
?
编辑:
正如@Pedro Soares所提到的,自Cocos2D-X 3.0以来你不能再覆盖draw()
了.你必须draw(Renderer *renderer, const kmMat4 &transform, bool transformUpdated)
改用.
//in my .h file
virtual void draw();
//in .cpp
void GameLayer:draw()
{
Layer::draw();
//draw code goes here
}
Run Code Online (Sandbox Code Playgroud)
它显示无法覆盖前向函数node :: draw()
据我所知,它正在研究旧版本.cocos2d-x 3.0有什么新方法吗?
提前致谢.