2011-04-09 68 views
0

所以我試着製作另一種叫做ccDrawFilledCircle的方法(因爲我需要一個實心圓)。我所做的是在這個問題上說的第一個答案:How to draw a solid circle with cocos2d。我複製ccDrawCircle將其名稱更改爲ccDrawFilledCircle並將其替換的行替換。但是,我得到的錯誤:修改ccDrawCircle的問題

Expected ')' before numeric constant

To few arguements to the function 'glDrawArrays'.

在我取代了線。

這裏是我的參考修正功能:

void ccDrawFilledCircle(CGPoint center, float r, float a, int segs, BOOL drawLineToCenter) 
{ 
    int additionalSegment = 1; 
    if (drawLineToCenter) 
     additionalSegment++; 

    const float coef = 2.0f * (float)M_PI/segs; 

    float *vertices = malloc(sizeof(float)*2*(segs+2)); 
    if(! vertices) 
     return; 

    memset(vertices,0, sizeof(float)*2*(segs+2)); 

    for(int i=0;i<=segs;i++) 
    { 
     float rads = i*coef; 
     float j = r * cosf(rads + a) + center.x; 
     float k = r * sinf(rads + a) + center.y; 

     vertices[i*2] = j; 
     vertices[i*2+1] =k; 
    } 
    vertices[(segs+1)*2] = center.x; 
    vertices[(segs+1)*2+1] = center.y; 

    // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY 
    // Needed states: GL_VERTEX_ARRAY, 
    // Unneeded states: GL_TEXTURE_2D, GL_TEXTURE_COORD_ARRAY, GL_COLOR_ARRAY 
    glDisable(GL_TEXTURE_2D); 
    glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
    glDisableClientState(GL_COLOR_ARRAY); 

    glVertexPointer(2, GL_FLOAT, 0, vertices); 
    glDrawArrays(GL_TRIANGLE_FAN 0, segs+additionalSegment); //Error here. 

    // restore default state 
    glEnableClientState(GL_COLOR_ARRAY); 
    glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
    glEnable(GL_TEXTURE_2D);  

    free(vertices); 
} 

誰能幫我找出這個問題?

回答

1

GL_TRIANGLE_FAN後面沒有逗號。

glDrawArrays(GL_TRIANGLE_FAN, 0, segs+additionalSegment);