【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制

时间:2022-04-03 03:45:25

本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010

一、图形的绘制

有时为了调试游戏,我们常常会需要绘制一些简单的几何图形,比如点、直线或者圆圈。这些几何图形颜色颜色

简单,样式单一,很少出现在游戏画面中,Cocos2D-X引擎提供了一个绘制几何图形的类CCDrawingPrimitives。我

们可以使用它来绘制几何图形,用于调试游戏画面。

注意:因为类CCDrawingPrimitives纯粹是为了调试游戏而存在的,所以我们在技术文档中找不到此类说明。

1、常用绘制图形函数如下。

<1> ccDrawColor4B(GLubyte r,GLubyte g,GLubyte b,GLubyte a)

作用:设置绘制颜色。

参数1:红色分量。

参数2:绿色分量。

参数3:蓝色分量。

参数4:透明度。

<2> glLineWidth(GLfloat width)

作用:设置线条宽度。

参数:宽度值。

<3> ccDrawLine(const CCPoint& origin,const CCPoint& destination)

作用:绘制一条直线。

参数1:起始坐标。

参数2:终点坐标。

<4> ccPointSize(GLfloat pointSize)

作用:设置每个点的大小。

参数:点的大小。

<5> ccDrawPoint(const CCPoint& point)

作用:绘制一个点。

参数:点的坐标。

<6> ccDrawCircle(const CCPoint& center,float radius,float angle,unsigned int segments,bool drawLineToCenter)

作用:绘制圆形。

参数1:中心点坐标。

参数2:半径长度。

参数3:圆形的角度。

参数4:角度。

参数5:定点数。

<7> ccDrawPoly(const CCPoint * poli,unsigned int numberOfPoints,bool closePolygon)

作用:绘制空心多边形。

参数1:顶点数组。

参数2:点数量。

参数3:是否自动封闭多边形。

<8> ccDrawSolidRect(CCPoint origin,CCPoint destination,ccColor4F color)

作用:绘制填充的矩形。

参数1:顶点数组。

参数2:点数量。

参数3:矩形的颜色。

<9> ccDrawRect(CCPoint origin,CCPoint destination)

作用:绘制空心的矩形。

参数1:顶点数组。

参数2:点数量。

<10> ccDrawQuadBezier(const CCPoint& origin,const CCPoint& control,const CCPoint& destination,unsigned int segments)

作用:绘制贝塞尔曲线。

参数1:起始点。

参数2:控制点。

参数3:结束点。

参数4:顶点数。

<11> ccDrawCubicBezier(conts CCPoint& origin,const CCPoint& control1,const CCPoint& control2,const CCPoint& destination,unsigned int segments)

作用:绘制立体贝塞尔曲线。

参数1:起始点。

参数2:控制点1。

参数3:控制点2.

参数4:结束点。

参数5:顶点数。

2、示例代码如下。

<1> 首先新建Cocos2D-X项目,在HelloWorldScene.h头文件中重写draw函数:

//重写draw函数
virtual void draw();

<2> 然后在HelloWorldScene.cpp文件中实现了draw函数:

void HelloWorld::draw(){
CCSize s = CCDirector::sharedDirector()->getWinSize();
//设置颜色
ccDrawColor4B(255,0,0,255);
//设置线的宽度
glLineWidth(2);
//绘制一条直线
ccDrawLine( ccp(0, 0), ccp(s.width*0.5, s.height*0.5) ); ccDrawColor4B(255,255,0,0);
//设置像素尺寸
ccPointSize(30);
//绘制一个点
ccDrawPoint( ccp(s.width*0.5, s.height *0.5) ); ccDrawColor4B(0,0,255,0);
//绘制圆形
ccDrawCircle( ccp(s.width/2, s.height/2), 50, CC_DEGREES_TO_RADIANS(90), 50, false);
ccDrawCircle( ccp(s.width/2, s.height/2), 50, CC_DEGREES_TO_RADIANS(45), 6, false); ccDrawColor4B(0, 255, 255, 255);
glLineWidth(5);
//绘制多边形
CCPoint vertices[] = { ccp(70,150), ccp(150,150), ccp(150,200),ccp(190,300) };
ccDrawPoly( vertices, 4, true); ccDrawColor4B(255, 0, 255, 255);
//绘制填充的多边形
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 ) );
// ccDrawPoly(<#const cocos2d::CCPoint *vertices#>, <#unsigned int numOfVertices#>, <#bool closePolygon#>) //绘制贝塞尔曲线
ccDrawQuadBezier(ccp(0,s.height), ccp(s.width/2,s.height/2), ccp(s.width,s.height), 50); //绘制立体的贝塞尔曲线
// 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); //绘制填充举行
ccDrawSolidRect(ccp(240,50), ccp(300,10), ccc4f(255, 177, 177, 255));
//绘制空心矩形
// ccDrawRect(<#cocos2d::CCPoint origin#>, <#cocos2d::CCPoint destination#>) }

3、示例效果图。

【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制

源码下载地址

【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制的更多相关文章

  1. 【Cocos2d-X开发学习笔记】第05期:渲染框架之布景层类(CCLayer)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010 图层也是渲染框架中很重要的内容.场景类用来划分游戏的状态 ...

  2. 【前端】移动端Web开发学习笔记【2】 &amp&semi; flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  3. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  4. Rest API 开发 学习笔记&lpar;转&rpar;

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  5. 步步为营 SharePoint 开发学习笔记系列总结

    转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...

  6. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  7. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  8. javaSE学习笔记(10)---List、Set

    javaSE学习笔记(10)---List.Set 1.数据存储的数据结构 常见的数据结构 数据存储的常用结构有:栈.队列.数组.链表和红黑树. 1.栈 栈:stack,又称堆栈,它是运算受限的线性表 ...

  9. 驱动开发学习笔记&period; 0&period;07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

随机推荐

  1. nyoj 473 A&Hat;B Problem

    A^B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Give you two numbers a and b,how to know the a^ ...

  2. LVM在线扩容

    我虚拟机根分区已经使用了35%,现在需要对他进行在线扩容,扩容之后使用率降到30% [root@localhost ~]# dfFilesystem 1K-blocks Used Available ...

  3. xargs的原理剖析及用法详解

    转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/5925923.html 学习这个xargs花了很长时间,在网上翻了很久也查了很多书关于xargs的介绍,都只 ...

  4. 支付宝分库分表中间件--zdal简介

    中间件, 如果仅仅作为一名用户的话, 主要关注一下如何使用即可, 大多数情况下也就是配置. 下面简单的介绍一下支付宝的分库分表中间件--->zdal在web项目中的配置. 1, 在网上查阅相关资 ...

  5. 深度学习中Xavier初始化

    "Xavier"初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training ...

  6. PHP大神必须养成的十大优良习惯

    1.多阅读手册和源代码 没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数.就在这些函数里面包括许多有用 的功能,如果你仔细阅读手册,你会经常 ...

  7. 虚拟机安装---vm12&plus;ubuntukylin16&period;04

    虚拟机安装及部分问题解决方案: https://blog.csdn.net/qq_35208390/article/details/78271743 安装vmware tools后,需设置共享文件夹才 ...

  8. 解析JSON 注意解析数据为一个对象的情况&period;--加一下说明

    应用场景: 调某接口时, 获取json数据, 需要对数据进行解析 . 第一种: 只判断接口是否调用成功 { "code":"10102000", "d ...

  9. 20155309 2016-2017-2《Java程序设计》课程总结

    预备作业1http://www.cnblogs.com/nhx19970709/p/6155580.html 第一次写博客,也是第一次用Markdown,具体流程都还不是很熟悉 预备作业2http:/ ...

  10. python字符串的切片

    # 字符串的切片 """ (5)字符串的切片 :切片就是截取字符串的意思 (1)语法 =>字符串[::] 完整格式:[开始索引:结束索引:间隔值 (2)[:结束索引 ...