cocos2dx 3.x 支持自定義的渲染命令

頭文件, 重寫draw 與 onDraw函數

Test.h

public:

void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags);

private:

    void onDraw(const kmMat4 &transform, uint32_t flags);

    CustomCommand _customCommand;


源文件

Test.cpp

只需要添加這樣的基本代碼就可以實現自己定義的命令,自定義的命令在 onDraw中實現。

本測試只是畫一個矩形。

void Test::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)

{

    log("on Draw");

        _customCommand.init(_globalZOrder);

        _customCommand.func = CC_CALLBACK_0(TowerPos::onDraw, this, transform, flags);

        renderer->addCommand(&_customCommand);

}

void Test::onDraw(const kmMat4 &transform, uint32_t flags)

{

    

    kmGLPushMatrix();

    kmGLLoadMatrix(&transform);

    

    glLineWidth(5.0f);

    

    Point srcPos = Point(m_pos.x - RADIUS(RADIUS32), m_pos.y + RADIUS(RADIUS32));

    Point destPos = Point(m_pos.x + RADIUS(RADIUS32), m_pos.y - RADIUS(RADIUS32));

    log("%f, %f, %f, %f", srcPos.x, srcPos.y, destPos.x, destPos.y);

    DrawPrimitives::drawRect(srcPos, destPos);

    

    glLineWidth(5);

    

    kmGLPopMatrix();

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章