RenderTexture与访问操作崩溃(Cocos2d-x)

时间:2014-06-04 16:01:24

标签: c++ cocos2d-x cocos2d-x-3.0

我遇到了一个我之前没有过的非常奇怪的问题,也许我太累了,看不到明显的问题。我在渲染纹理的visit()begin()之间创建RenderTexture并在绘制节点上调用end()

(这是我在主场景的init方法中未经修改的代码)

RenderTexture *rt = RenderTexture::create(500, 500);
rt->beginWithClear(1, 1, 1, 1);

// [1] Should create a dot in the center of the texture, but...
DrawNode *dot = DrawNode::create();
dot->drawDot(Point(250, 250), 20, Color4F::RED);

// [2] When calling this, the code crashes later, issuing an EXC_BAD_ACCESS error
// somewhere in the RenderCommand queue.
dot->visit();

rt->end();

rt->setPosition(m_visibleSize.width / 2, m_visibleSize.height / 2);
this->addChild(rt, 100000);

谢谢!

1 个答案:

答案 0 :(得分:0)

愚蠢的我......我忘了保留dot,所以它在块的末尾被释放,而RenderCommand队列有一个悬空指针。解决方案是

dot->retain();

在致电visit()之前。