cocos2d-x画扇形
来源:互联网 发布:10年科比总决赛数据 编辑:程序博客网 时间:2024/04/27 23:06
第一步:
在CCDrawingPrimitives.加入如下方法:
/**画扇形***/
void drawSolidfanshaped( const Point& center, float radius, float angle, unsigned int segments, float scaleX, float scaleY);
void drawSolidfanshaped( const Point& center, float radius, float angle, unsigned int segments);
在CCDrawingPrimitives.cpp进行实现
void drawSolidfanshaped( const Point& center, float radius, float angle, unsigned int segments)
{
drawSolidfanshaped(center, radius, angle, segments, 1.0f, 1.0f);
}
void drawSolidfanshaped( const Point& center, float radius, float angle, unsigned int segments, float scaleX, float scaleY)
{
lazy_init();
const float coef = (float)angle/segments; //系数:一段有多少度,angle为弧度制,要先通过CC_DEGREES_TO_RADIANS()转化
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(rads + angle) * scaleX + center.x;
GLfloat k = radius * sinf(rads + angle) * scaleY + center.y;
vertices[(i+1)*2] = j; //x坐标
vertices[(i+1)*2+1] = k; //y坐标
}
/*vertices[(segments+1)*2] = center.x;
vertices[(segments+1)*2+1] = center.y;*/
s_shader->use();
s_shader->setUniformsForBuiltins();
s_shader->setUniformLocationWith4fv(s_colorLocation, (GLfloat*) &s_color.r, 1);
GL::enableVertexAttribs( GL::VERTEX_ATTRIB_FLAG_POSITION );
#ifdef EMSCRIPTEN
setGLBufferData(vertices, sizeof(GLfloat)*2*(segments+2));
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, 0);
#else
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);
#endif // EMSCRIPTEN
glDrawArrays(GL_TRIANGLE_FAN, 0, (GLsizei) segments+1);
::free( vertices );
CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,segments+1);
}
第二步:
在自己创建的类重写如下方法:我的类是:Clock
在.h文件加入
public:
void draw(Renderer *renderer, const kmMat4 &transform, bool transformUpdated);
protected:
void onDraw(const kmMat4 &transform, bool transformUpdated);
CustomCommand _customCommand;
在.cpp文件加入
void CLock::draw(Renderer *renderer, const kmMat4 &transform, bool transformUpdated)
{
_customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(CLock::onDraw, this, transform, transformUpdated);
renderer->addCommand(&_customCommand);
}
void CLock::onDraw(const kmMat4 &transform, bool transformUpdated)
{
DrawPrimitives::drawSolidfanshaped(Point(m_winSize.width/2,m_winSize.height/2),130,CC_DEGREES_TO_RADIANS(30),100);
}
- cocos2d-x画扇形
- cocos2d-x 画实心圆以及扇形
- cocos2d-x 3.2 扇形按钮
- cocos2d-x中绘制扇形
- AS3 画扇形函数
- C++画扇形
- Google earth 画扇形
- opengl 画扇形
- HTML5 画扇形图
- MFC中画扇形
- PS画扇形
- 给Bitmap画扇形
- cocos2dx画扇形
- gdi+(6)画扇形
- QPainter 画扇形
- openlayers2.X画园形和扇形demo
- C#之WinForm基础 画扇形时,出现的从X轴到扇形的第一条边沿顺时针方向的角怎么理解
- cocos2d-x 画物理齿轮
- Spoofax语言工作台学习笔记——命名的定义和声明
- 意念力促使生物演化论
- 【容斥原理】AOJ-557 Redraiment猜想2
- Oracle数据库学习
- android mimeType
- cocos2d-x画扇形
- “上帝的算法”在高斯混合分布中的应用
- hdu1998&杭电oj_1998(奇阶魔方数)
- 23种设计模式(1):单例模式
- printk的实现以及内核日志的相关知识
- GitHub CSS 无法加载 解决办法
- hdu 1032
- 如何给nopcommerce增加一个类似admin的area
- Eclipse中Jquery报错 解决