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

来源:互联网 发布:淘宝怎么买医疗器械 编辑:程序博客网 时间:2024/05/16 23:40

头文件, 重写draw 与 onDraw函数

Test.h

public:

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

private:

    void onDraw(constkmMat4 &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(constkmMat4 &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();

}

0 0