《Cocos2D-x权威指南》——3.9 绘制图形

简介: 本节书摘来自华章计算机《Cocos2D-x权威指南》一书中的第3章,第3.9节,作者:满硕泉著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.9 绘制图形

在节点类CCNode中,可以重写draw函数并在其中绘制图形,如tests项目中DrawPrimitivesTest文件夹下DrawPrimitivesTest.cpp文件中的DrawPrimitivesTest类中的draw函数。
1)绘制直线。
参数分别为直线的起点和终点。如代码清单3-44所示。
代码清单3-44 绘制直线

ccDrawLine( ccp(0, 0), ccp(s.width, s.height) );

默认绘制的直线是白色的、不透明的、线宽是1并且是抗锯齿的。设置这些绘制参数后,绘制直线如代码清单3-45所示。
代码清单3-45 设置绘制参数后绘制直线

glLineWidth( 5.0f );
ccDrawColor4B(255,0,0,255);
ccDrawLine( ccp(0, s.height), ccp(s.width, 0) );

这里需要说明的是,OpenGL中是状态机,除非重新设置,否则这些参数都会保持到下一个状态。
2)绘制点。
如代码清单3-46所示,注意OpenGL中的点是正方形的。
代码清单3-46 绘制点

CCPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };
ccPointSize(4);
ccDrawColor4B(0,255,255,255);
ccDrawPoints( points, 4);

3)画圆。
函数的参数为圆心、半径、角度、分段数(将圆微分为直线)和是否与中心连线,如代码清单3-47所示。
代码清单3-47 画圆

glLineWidth(2);
ccDrawColor4B(0, 255, 255, 255);
ccDrawCircle( ccp(s.width/2, s.height/2), 50,    CC_DEGREES_TO_RADIANS(90), 50, true);

4)画多边形。
函数的参数为点数组、点数量和图形是否封闭,如代码清单3-48所示。
代码清单3-48 画多边形

ccDrawColor4B(255, 0, 255, 255);
glLineWidth(2);
CCPoint vertices2[] = { ccp(30,130), ccp(30,230), ccp(50,200) };
ccDrawPoly( vertices2, 3, true);

5)画贝塞尔曲线。
函数的第一个参数为一个控制点,第二个和第三个参数为两个控制点,最后一个参数为分段数,如代码清单3-49所示。
代码清单3-49 画贝塞尔曲线

CHECK_GL_ERROR_DEBUG();

// draw quad bezier path
ccDrawQuadBezier(ccp(0,s.height), ccp(s.width/2,s.height/2), ccp(s.width,s.height), 50);

CHECK_GL_ERROR_DEBUG();

// draw cubic bezier path
ccDrawCubicBezier(ccp(s.width/2, s.height/2), ccp(s.width/2+30,s.height/2+50), ccp(s.width/2+60,s.height/2-50),ccp(s.width, s.height/2),100);

示例的运行效果如图3-36所示。

image

注意 Cocos2D-x提供的绘制图形函数里没有绘制实心圆形的函数。需要绘制实心圆形时,请将ccDrawCircle函数(在CCDrawingPrimitives.cpp文件中)调用glDrawArrays函数时的第一个参数由GL_LINE_STRP改为GL_TRIANGLE_FAN即可。

相关文章
|
11月前
|
前端开发 JavaScript 异构计算
cocos creator shader 入门教程1:28行代码webgl程序,带你极速入门
cocos creator shader 入门教程1:28行代码webgl程序,带你极速入门
322 0
|
Android开发 iOS开发
【Cocos2d-x】开发基础-Cocos2d-x坐标系
【Cocos2d-x】开发基础-Cocos2d-x坐标系
121 0
|
设计模式 定位技术
【Cocos2d-x】开发基础-Cocos2d-x核心概念
【Cocos2d-x】开发基础-Cocos2d-x核心概念
99 0
|
JavaScript
《Cocos2D权威指南》——2.4 碰撞检测
本节书摘来自华章计算机《Cocos2D权威指南》一书中的第2章,第2.4节,作者:王寒,屈光辉,周雪彬著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1091 0
|
存储 缓存 JavaScript
《Cocos2D权威指南》——3.5 CCTexture纹理类
本节书摘来自华章计算机《Cocos2D权威指南》一书中的第3章,第3.5节,作者:王寒,屈光辉,周雪彬著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1340 0
|
缓存 JavaScript 前端开发
《Cocos2D-x权威指南》——3.5 精灵类
本节书摘来自华章计算机《Cocos2D-x权威指南》一书中的第3章,第3.5节,作者:满硕泉著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1070 0