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