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);
}
誰能幫我找出這個問題?