打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【玩转cocos2d-x之三十四】绘图:CCDrawingPrimitives和CCDrawNode
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/18978237
最近忙出翔了,这年过的也揪心。好久没来更新博客了,今天就来写一写cocos2d-x中图形的绘制。
1.概述
其实cocos2d-x封装了大量的opengl的绘图函数,我们可以很轻松的在游戏中调用。但是实际上我们很少会这么做,因为编码绘图的方式效率实在太低了,尤其是诸如一些高阶贝塞尔曲线之类的,官方也不建议这么做,使用图像能更有效的提高绘图效率,同时也会更为的美观,也减少了一些精灵遮挡问题和边缘锯齿问题。cocos2d-x中绘图主要有两种方式:CCDrawingPrimitives和CCDrawNode。它们都在cocos2dx\draw_nodes目录下。
2.CCDrawingPrimitives(原生绘图)
2.1.特点
CCDrawingPrimitives必须在节点的draw函数中调用,draw函数每帧被调用一次,主要做一些绘制的工作。但这并不意味着它就是静态不可改变的,我们完全可以通过修改描绘内容的方式来动态绘图。比如可以直接在用触摸的方式在屏幕上绘图。
另外,使用CCDrawingPrimitives绘图默认的Z-Order是0,所以可能会被其他节点覆盖,因为它无法设置Z-Order,所以只能通过设置其他节点的Z-Order为负值使得绘图在最前端得以看见。
2.2.API
[cpp] view plaincopy
//绘制一个给定x,y值的点
void CC_DLL ccDrawPoint( const CCPoint& point );
//绘制一组点
void CC_DLL ccDrawPoints( const CCPoint *points, unsigned int numberOfPoints );
//绘制一条给定起始点和目标点的直线
void CC_DLL ccDrawLine( const CCPoint& origin, const CCPoint& destination );
//绘制一个给定起始点和目标点的矩形
void CC_DLL ccDrawRect( CCPoint origin, CCPoint destination );
//绘制一个给定起始点和目标点和颜色的矩形
void CC_DLL ccDrawSolidRect( CCPoint origin, CCPoint destination, ccColor4F color );
//绘制一个给定一组点的多边形,可以是闭合或开放
void CC_DLL ccDrawPoly( const CCPoint *vertices, unsigned int numOfVertices, bool closePolygon );
//绘制一个给定一组点和颜色的多边形
void CC_DLL ccDrawSolidPoly( const CCPoint *poli, unsigned int numberOfPoints, ccColor4F color );
//绘制一个给定中心,半径,分段数的圆
void CC_DLL ccDrawCircle( const CCPoint& center, float radius, float angle, unsigned int segments, bool drawLineToCenter, float scaleX, float scaleY);
void CC_DLL ccDrawCircle( const CCPoint& center, float radius, float angle, unsigned int segments, bool drawLineToCenter);
//绘制一个带一个控制点的贝塞尔曲线(二次)
void CC_DLL ccDrawQuadBezier(const CCPoint& origin, const CCPoint& control, const CCPoint& destination, unsigned int segments);
//绘制一个带两个控制点的贝塞尔曲线(高阶)
void CC_DLL ccDrawCubicBezier(const CCPoint& origin, const CCPoint& control1, const CCPoint& control2, const CCPoint& destination, unsigned int segments);
//绘制默认曲率的基数样条
void CC_DLL ccDrawCatmullRom( CCPointArray *arrayOfControlPoints, unsigned int segments );
//绘制指定曲率的基数样条
void CC_DLL ccDrawCardinalSpline( CCPointArray *config, float tension,  unsigned int segments );
//设置绘制颜色,4个byte型
void CC_DLL ccDrawColor4B( GLubyte r, GLubyte g, GLubyte b, GLubyte a );
//设置绘制颜色,4个float型
void CC_DLL ccDrawColor4F( GLfloat r, GLfloat g, GLfloat b, GLfloat a );
//设置点大小,默认为1
void CC_DLL ccPointSize( GLfloat pointSize );
2.3.示例
代码使用的是TestCpp中代码。
3.CCDrawNode(绘图节点)
3.1.特点
CCDrawNode从CCNode继承而来,是一个图形绘制的节点类,它提供了几个常用的点线面函数方便绘图,其实在之前的游戏遮罩一文中就有写过。相较于CCDrawingPrimitives,这里更推荐使用CCDrawNode,
(1)它将绘图封装为普通节点的方式进行处理,符合cocos2d-x树状编程的思想,同时也避免了一些遮盖的问题。
(2)不需要在draw函数中调用。
(3)使用批处理绘图,提高了绘图效率。
3.2.API
[cpp] view plaincopy
//绘制一个指定位置,大小,颜色的点
void drawDot(const CCPoint &pos, float radius, const ccColor4F &color);
//绘制一个指定起点终点,大小,颜色的点
void drawSegment(const CCPoint &from, const CCPoint &to, float radius, const ccColor4F &color);
//绘制一个指定点,填充颜色,边框颜色的,边框宽度的多边形
void drawPolygon(CCPoint *verts, unsigned int count, const ccColor4F &fillColor, float borderWidth, const ccColor4F &borderColor);
3.3.示例
代码也是TestCpp中的代码。
4.源码下载
可以自己看TestCpp示例,也可以从这里下载:http://download.csdn.net/detail/jackyvincefu/6903357
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Cocos2d-x3.2与OpenGL渲染总结
cocos2d-x深入改造:打造健康的游戏研发流程
游戏开发者如何应用 CocosCreator 技术? | 技术头条
震震震震震震震惊!20行代码能干嘛?
【Cocos2d-x】新手自学(八)自定义路径,随心所欲移动精灵(2.0.1版本)
最简单的C#快速入门教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服