gpt4 book ai didi

cocos2d-x-3.0 绘制与 onDraw

转载 作者:行者123 更新时间:2023-12-03 08:24:36 25 4
gpt4 key购买 nike

我正在使用 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?
}

从读取头文件和源文件来看,这似乎是将渲染命令直接发送到渲染器的某种方式,对吗?

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

编辑:

正如@Pedro Soares 提到的,从 Cocos2D-X 3.0 开始,你不能覆盖 draw()了。您必须使用 draw(Renderer *renderer, const kmMat4 &transform, bool transformUpdated)反而。

最佳答案

cocos2d-x RC0 包上的示例展示了如何在其他层之上使用 DrawPrimitives。

在您的层 .h 添加以下内容:

private:
void onDrawPrimitives(const kmMat4 &transform, bool transformUpdated);
CustomCommand _customCommand;

现在在图层的 cpp 中,覆盖图层绘制方法并包含 onDrawPrimitives 方法:
void MyLayer::onDrawPrimitives(const kmMat4 &transform, bool transformUpdated)
{
kmGLPushMatrix();
kmGLLoadMatrix(&transform);

//add your primitive drawing code here
DrawPrimitives::drawLine(ccp(0,0), ccp(100, 100));
}

void MyLayer::draw(Renderer *renderer, const kmMat4& transform, bool transformUpdated)
{
_customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(MyLayer::onDrawPrimitives, this, transform, transformUpdated);
renderer->addCommand(&_customCommand);
}

关于cocos2d-x-3.0 绘制与 onDraw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22549233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com