cocos2d-x中绘制扇形

cocos2d-x本身不提供直接绘制扇形的功能,但可以通过两种方式实现:利用CCDrawingPrimitives和DrawNode。在CCDrawingPrimitives中声明相关函数,或者在DrawNode中定义方法。要使用这些方法,需要在对应场景类中进行调用和实现。
摘要由CSDN通过智能技术生成

cocos2d-x中并没有直接绘制扇形的方法,只能够自己在底层封装。方法有两种:

一、使用CCDrawingPrimitives绘制

1、在CCDrawingPrimitives.h中声明函数:

    /********************************************************画扇形****/
    void drawSolidFan( const Vec2& center, float radius, float from,float angle, unsigned int segments, float scaleX, float scaleY);
    void drawSolidFan( const Vec2& center, float radius, float from,float angle, unsigned int segments);
    
    /*****************************************************************/

2、然后在CCDrawingPrimitives.cpp中实现方法:

/********************************************************画扇形****/
    
void drawSolidFan( const Vec2& center, float radius, float from, float angle, unsigned int segments, float scaleX, float scaleY)
{
        
    lazy_init();
        
    const float coef = (float)angle/segments;
        
    GLfloat *vertices = (GLfloat*)calloc( sizeof(GLfloat)*2*(segments+2), 1);
    if( ! vertices )
        return;
    
    vertices[0]=center.x;
    vertices[1]=center.y;
    
    for(unsigned int i = 0;i <= segments; i++) {
        float rads = i*coef;
        GLfloat j = radius * cosf(from+rads) * scaleX + center.x;
        GLfloat k = radius * sinf(from+rads) * scaleY + center.y;
            
        vertices[(i+1)*2] = j;
        vertices[(i+1)*2+1] = k;
    }

    s_shader->use();
    s_shader->setUniformsForBuiltins();
    s_shader->setUniformLocationWith4fv(s_colorLocation, (GLfloat*) &s_color.r, 1);
        
    GL::enableVertexAttribs( GL::VERTEX_AT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值