Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在cocos2d-X3beta中围绕精灵绘制边界框?_C++_Cocos2d X_Cocos2d X 3.0 - Fatal编程技术网

C++ 如何在cocos2d-X3beta中围绕精灵绘制边界框?

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 ),

我尝试在我添加到图层的精灵周围绘制边界框,并将其放置在某个位置 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( _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);`