C++ 如何在cocos2d-X3beta中围绕精灵绘制边界框?
我尝试在我添加到图层的精灵周围绘制边界框,并将其放置在某个位置 CC_SPRITE_DEBUG_DRAW标志在版本3中不起作用 但是我从CCSprite中删除了代码 我在spirit draw方法中使用此代码:C++ 如何在cocos2d-X3beta中围绕精灵绘制边界框?,c++,cocos2d-x,cocos2d-x-3.0,C++,Cocos2d X,Cocos2d X 3.0,我尝试在我添加到图层的精灵周围绘制边界框,并将其放置在某个位置 CC_SPRITE_DEBUG_DRAW标志在版本3中不起作用 但是我从CCSprite中删除了代码 我在spirit draw方法中使用此代码: Point vertices1[4] = { Point( _quad.bl.vertices.x, _quad.bl.vertices.y ), Point( _quad.br.vertices.x, _quad.br.vertices.y ),
Point vertices1[4] = {
Point( _quad.bl.vertices.x, _quad.bl.vertices.y ),
Point( _quad.br.vertices.x, _quad.br.vertices.y ),
Point( _quad.tr.vertices.x, _quad.tr.vertices.y ),
Point( _quad.tl.vertices.x, _quad.tl.vertices.y ),
};
DrawPrimitives::setDrawColor4B(255, 255, 0, 255);
glLineWidth(2);
Point(50,100) };
DrawPrimitives::drawPoly( vertices, 4, true);
但它给出了在主窗口左下角绘制精灵的世界空间位置,而不是精灵位置。
我怎样才能解决这个问题
ps
我在这里看到了一些东西,但我不知道如何将它翻译成cocos2d-x3
请尝试以下代码片段(这仍然是cocos2dx v2,但您可以轻松地将其升级到v3) 还可以查看CCDrawNode和drawPolygon,它们的性能优于DrawPrimitive 请注意,您应该将线宽重置为以前的状态
float oldWidth = .0f;
glGetFloatv(GL_LINE_WIDTH, &oldWidth);
/// Set new line width
glLineWidth(mLineWidth);
....
/// Reset previous line width
glLineWidth(oldWidth);
从Cocos2d-x 3.3开始,您可以使用
DrawNode
类绘制形状。它继承自节点
,因此您可以将其添加为子节点或将其用作父节点
auto box = DrawNode::create();
box::drawRect(p1, p2, p3, Color4F(255, 255, 0, 255));
box::setLineWidth(2)
this->addChild(box); // this being a node or scene
还有
void drawPoint(const Vec2& point, const float pointSize, const Color4F &color);
void drawLine(const Vec2 &origin, const Vec2 &destination, const Color4F &color);`
还有其他让你想起Cocoa的UIBezierPath
的酷东西
void drawPoint(const Vec2& point, const float pointSize, const Color4F &color);
void drawLine(const Vec2 &origin, const Vec2 &destination, const Color4F &color);`