cocos2d-x图形绘制
2013-12-08 10:41
274 查看
原创文章,转载请注明出处:/article/1389504.html
图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形(填充的和没有填充的),圆,贝赛尔曲线。
首先在HelloWorld类中重写父类的draw方法
[cpp] view
plaincopy
virtual void draw();
在源文件中将init中的类容删去,应为init方法比draw先执行,会覆盖我们画出的效果。删除之后,init方法如下
[cpp] view
plaincopy
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
bRet = true;
} while (0);
return bRet;
}
然后在draw方法中写如下代码:
[cpp] view
plaincopy
void HelloWorld::draw()
{
CHECK_GL_ERROR_DEBUG();
/*
画一条直线,默认的宽度是1,颜色是白色,不透明,glEnable(GL_LINE_SMOOTH);
默认的情况下是后面不再设置颜色后线宽
*/
glLineWidth( 1.0f );
ccDrawColor4B(255,255,255,255);
ccDrawLine(ccp(0,0),ccp(480,320));
CHECK_GL_ERROR_DEBUG();
glLineWidth( 5.0f );
ccDrawColor4B(255,0,0,255);
ccDrawLine(ccp(0,320), ccp(480,0));
CHECK_GL_ERROR_DEBUG();
//ccPointSize(128);这个没用啊
ccDrawColor4B(0,255,255,128);
ccDrawPoint( ccp(240,200) );
CHECK_GL_ERROR_DEBUG();
// 4个点一起画
CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };
ccPointSize(4);
ccDrawColor4B(0,255,255,255);
ccDrawPoints( points, 4);
// draw a green circle with 10 segments
glLineWidth(1);
ccDrawColor4B(0, 255, 0, 255);
ccDrawCircle( ccp(240,160),//圆心
//DrawSolidCircle实心
100,//半径
1, //如果后面设置了从圆心到圆的连线为true的话,
//这个值是连线的角度,0为水平向左,逆时针
360,//将这个圆分为多少块
true//是否有从圆心到圆的连线
);
//画一个多边形
ccDrawColor4B(255, 255, 0, 255);
glLineWidth(1);
CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) };
ccDrawPoly( vertices, 5, true//是否封闭
);
// 填充的多边形
glLineWidth(1);
CCPoint filledVertices[] = { ccp(0,120), ccp(50,120), ccp(50,170), ccp(25,200), ccp(0,170) };
ccDrawSolidPoly(filledVertices, 5, ccc4f(0.5f, 0.5f, 1, 1 )//填充颜色
);
//贝塞尔曲线
ccDrawColor4B(255, 255, 0, 255);
ccDrawCubicBezier(ccp(0,0),//开始点
ccp(50,50),//控制点
ccp(250,100),//控制点
ccp(300,300),//目标点
100//分成多少段得到的曲线
);
// 还原默认值
glLineWidth(1);
ccDrawColor4B(255,255,255,255);
ccPointSize(1);
}
在代码中的注释解释的很清楚,下面来一张效果图:
![](http://img.my.csdn.net/uploads/201301/08/1357614305_9522.png)
源代码的话,那就没有必要上传了,代码我都贴出来了。
图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形(填充的和没有填充的),圆,贝赛尔曲线。
首先在HelloWorld类中重写父类的draw方法
[cpp] view
plaincopy
virtual void draw();
在源文件中将init中的类容删去,应为init方法比draw先执行,会覆盖我们画出的效果。删除之后,init方法如下
[cpp] view
plaincopy
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
bRet = true;
} while (0);
return bRet;
}
然后在draw方法中写如下代码:
[cpp] view
plaincopy
void HelloWorld::draw()
{
CHECK_GL_ERROR_DEBUG();
/*
画一条直线,默认的宽度是1,颜色是白色,不透明,glEnable(GL_LINE_SMOOTH);
默认的情况下是后面不再设置颜色后线宽
*/
glLineWidth( 1.0f );
ccDrawColor4B(255,255,255,255);
ccDrawLine(ccp(0,0),ccp(480,320));
CHECK_GL_ERROR_DEBUG();
glLineWidth( 5.0f );
ccDrawColor4B(255,0,0,255);
ccDrawLine(ccp(0,320), ccp(480,0));
CHECK_GL_ERROR_DEBUG();
//ccPointSize(128);这个没用啊
ccDrawColor4B(0,255,255,128);
ccDrawPoint( ccp(240,200) );
CHECK_GL_ERROR_DEBUG();
// 4个点一起画
CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };
ccPointSize(4);
ccDrawColor4B(0,255,255,255);
ccDrawPoints( points, 4);
// draw a green circle with 10 segments
glLineWidth(1);
ccDrawColor4B(0, 255, 0, 255);
ccDrawCircle( ccp(240,160),//圆心
//DrawSolidCircle实心
100,//半径
1, //如果后面设置了从圆心到圆的连线为true的话,
//这个值是连线的角度,0为水平向左,逆时针
360,//将这个圆分为多少块
true//是否有从圆心到圆的连线
);
//画一个多边形
ccDrawColor4B(255, 255, 0, 255);
glLineWidth(1);
CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) };
ccDrawPoly( vertices, 5, true//是否封闭
);
// 填充的多边形
glLineWidth(1);
CCPoint filledVertices[] = { ccp(0,120), ccp(50,120), ccp(50,170), ccp(25,200), ccp(0,170) };
ccDrawSolidPoly(filledVertices, 5, ccc4f(0.5f, 0.5f, 1, 1 )//填充颜色
);
//贝塞尔曲线
ccDrawColor4B(255, 255, 0, 255);
ccDrawCubicBezier(ccp(0,0),//开始点
ccp(50,50),//控制点
ccp(250,100),//控制点
ccp(300,300),//目标点
100//分成多少段得到的曲线
);
// 还原默认值
glLineWidth(1);
ccDrawColor4B(255,255,255,255);
ccPointSize(1);
}
在代码中的注释解释的很清楚,下面来一张效果图:
![](http://img.my.csdn.net/uploads/201301/08/1357614305_9522.png)
源代码的话,那就没有必要上传了,代码我都贴出来了。
相关文章推荐
- Cocos2d-x 重写draw方法绘制直线等图形时被遮挡覆盖问题的一种解决方案
- (译)Cocos2d_for_iPhone_1_Game_Development_Cookbook:1.4绘制OpenGL图形
- cocos2d-x初探学习笔记(12)--图形绘制
- Cocos2d-x——DrawNode绘制图形
- cocos2d-x 图形绘制
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(5)---绘制基本图形
- Cocos2d-x初入学堂(1)-->图形绘制
- cocos2d-x中绘制3D图形--3D ToolKit for cocos2dx实现原理
- Cocos2d-x学习笔记(七)实例——绘制图形
- Cocos2d-x初入学堂(1)-->图形绘制
- Cocos2d-js 开发记录:基本图形绘制
- cocos2d-x初探学习笔记(12)--图形绘制
- Cocos2d-x 绘制图形
- 【Cocos2d-x游戏引擎开发笔记(18)】图形绘制
- 【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制DrawPrimitives
- cocos2d-x 绘制基本图形
- Cocos2d-x 图形绘制
- cocos2d-x中绘制3D图形--3D ToolKit for cocos2dx实现原理
- cocos2d-x 3.0 绘制图形DrawNode与调用周期性回调函数schedule
- 【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制