文档章节

渲染--笔记(2)

 悠米海
发布于 2014/06/12 22:25
字数 968
阅读 9
收藏 0
点赞 0
评论 0

CCLayer函数定义:

游戏需要很多图层来实现功能,比如菜单层(CCMenu)、颜色显示层(CCColorLayer)

颜色层用于烘托背景,开发者可以填充RGB颜色,设置图层的透明度,移动、闪烁或者渐变。类继承自CCLayerCCRGBAProtocol(颜色控制)CCBlendProtocol(混合控制)定义如下:

CCColorLayer有一个子类CCLayerGradient:颜色渐变效果的颜色图层,参数是2个颜色,初始色(透明度)和最终色(透明度)

CCMenu菜单图层:

存放CCMenuItem及其子类。

CCLayer还有其它子类:UILayerCCControlCCScrollViewCCBProxy

精灵类(CCSprite)

继承关系:

classCC_DLLCCSprite : publicCCNodeRGBApublicCCTextureProtocol

classCC_DLLCCNodeRGBA : publicCCNodepublicCCRGBAProtocol

classCC_DLLCCTextureProtocol : publicCCBlendProtocol

继承CCNode和两个处理精灵纹理图片的类(颜色管理和纹理图片管理),类自有属性如下:

创建方法如下:

创建纹理对象方法:

CCTextureCache::sharedTextureCache()->addImage(path)

创建精灵帧方法:

集合:CCSpriteBatchNode::create(path,num)

缓冲:CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(path)

精灵对象:CCSprite::createWithSpriteFrameName(path)

集合和缓冲是提升游戏性能准备的。

 

精灵集合类(CCSpriteBatchNode)

子类:CCLabelBMFont(字体类)CCTMXLayer(地图背景类)

对应的纹理图片很丰富,一张图片包含多种文字和许多图块和图片

 

OpenGLES渲染器的运行原理:把必要的信息传递给图形处理硬件,然后将整个或部分图片渲染。使用精灵集合类,一个集合中的精灵都使用同一张渲染贴图,在绘制的时候就不需要频繁传递贴图信息给图形硬件,提升效率。一个精灵集合绘制的对象出于同一个画面层次,纹理大小存在限制(IOS:1024*1024),并且必须是2N次方大小。

精灵集合创建方法:

 

精灵帧缓冲(CCSpriteFrameCache)

存放精灵帧(CCSpriteFrame)对象的缓冲池,CCSpriteFrame直接继承自CCObject,不是CCNode的子类,不能绘制于加入节点链表,作用在于持有一个纹理对象,为精灵对象提供动画支持。

精灵帧的属性:

创建函数:

支持使用纹理创建精灵帧,与创建精灵类似。通过使用精灵帧可以方便的创建精灵对象不用考虑内存,所以精灵帧缓冲包含了游戏所用的精灵帧,纹理来自组合的纹理图片或者是多个单独的纹理图片。精灵帧缓冲支持加载多个精灵帧对象,使用plist描述文件,加载方法如下:

plist文件+问题图片or纹理对象

可以使用Zwoptex纹理编辑器制作纹理

一个实例:

2、文字与字体:

Cocoss2dx3个文字处理类:CCLabelAtlasCCLabelBMFontCCLabelTTF(TTF字体)都继承了CCLabelProtocol协议。如下:

都继承自CCNodeCCLabelTTF继承关系:

继承CCSprite,因此CCTextFieldTTFCCLabelTTF可以当做精灵对象使用。

CCLabelTTF的创建函数:

参数说明:文字内容,字体名称,字体尺寸,标签尺寸,文字水平对齐方式,文字竖直对齐方式

实例可以参考:samples\Cpp\TestCpp\Classes\FontTest\FontTest.cpp showFont函数

 

BMFont标签类(CCLabelBMFont)

继承关系:

继承自CCSpriteBatchNode(精灵集合),使用自定义文字,开发者可以自定义字体,

使用BMFont(http://www.angelcode.com/products/bmfont/)编辑器编辑字体图集。

实例:samples\Cpp\TestCpp\Classes\LabelTest\LabelTest.cpp Atlas3

方法为:CCLabelBMFont::create(文字内容,字体路径)

 

Atlas标签类(CCLabelAtlas)

继承关系:

继承自CCNode,与TTF不同的是不生成纹理图片,直接使用源纹理图片,因此开发人员可以自定义字体和显示内容。

创建函数:

参数:文字内容,纹理path,宽度,高度,起始位置

 

3、菜单按钮:

容器CCMenu,节点CCMenuItem,继承关系:

实例:samples\Cpp\TestCpp\Classes\MenuTest\MenuTest.cpp MenuLayerMainMenu对象

 

4、几何绘制(DRawPrimitives)

CCDrawingPrimitives.h/cpp提供的绘制函数:

© 著作权归作者所有

共有 人打赏支持
粉丝 12
博文 93
码字总数 37069
作品 0
浦东
程序员
Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础

Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础 本系列为UnityShader入门精要读书笔记总结, 原作者博客链接:http://blog.csdn.net/candycat1992/article/ 书籍链接:http://prod...

wwlcsdn000
2017/12/26
0
0
一踩一个准之Markdown

Markdown是一个轻量级的文本标记语言,通过简单直观的语法,追求编辑时的酣畅淋漓和阅读时的美观大方。MD设计的初衷主要为以下三点: 纯文本的文件易于保存和传输,跨平台支持好; 通过一些有意...

tamlok
2017/04/17
0
0
Android学习笔记进阶16之BitmapShader

<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个方法来产生一个画有一个位图的渲...

迷途d书童
2012/03/05
495
0
OpenGL学习笔记 2 让正方形动起来

在笔记1里面我记录下来渲染一个最基本的小三角形需要哪些准备工作以及程序的主要框架,这一节我继续跟上蓝宝书的脚步,试着理解二维动画怎么做出来的。这个笔记主要记录了 消息相应应该用什么...

yuquan87
05/28
0
0
react-native 入门之 helloworld

简介 在网上找了一篇很不错的例子,推荐给大家边学边做 helloworld 首先,我们先创建一个项目,它的原始代码如下,可以看出来主要分为样式和功能两部分,没什么值得留意的 显示效果是这样的 ...

邪人君子
01/20
0
0
啦啦啦哈利路亚/laravel_biji

采用Laravel5.1框架的在线笔记系统 演示地址 http://120.27.102.104/auth/login 项目介绍 基于Laravel+Bootstrap+MariaDB开发系统架构 功能说明 在线笔记系统基于B/S结构的社区性质的协调信息...

啦啦啦哈利路亚
2017/03/08
0
0
靡不有初,鲜克有终——写在VNote半周岁

靡不有初鲜克有终 从去年的十一开始到今天,VNote已经半周岁了,也迭代到版本了。目前,VNote的用户很少,知道VNote的也不多。想想,使用最多的用户,可能还是我自己!:) 依然记得建立Q群后,...

tamlok
2017/04/23
0
0
Vim与Markdown,实现键不离手

Vim作为坊间流传的编辑器之神,能在双手不离开键盘的情况下实现各种高效的文本编辑操作以及帮助乌干达的可怜儿童;Markdown作为一种非常简单的标记语言,能在不需要鼠标指指点点的情况下就完...

tamlok
2017/04/09
0
0
Vue.js笔记第二波,Class 与 Style 绑定,条件渲染,列表渲染

Vue.js笔记第二波,Class 与 Style 绑定,条件渲染,列表渲染 今天学了三个大的板块,学起来很快,但是整理笔记很浪费时间,后面把笔记补上,我的学习方法是先快速学习,然后整理笔记,充分消...

皇上洗碗
2016/10/19
535
0
Unity Shader 学习笔记(19) 屏幕后处理效果、调整亮度、饱和度、对比度

Unity Shader 学习笔记(19) 屏幕后处理效果、调整亮度、饱和度、对比度 参考书籍:《Unity Shader 入门精要》 屏幕后处理效果(screen post-processing effects) 即在渲染完场景得到屏幕图...

l773575310
2017/11/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git 2.18版本发布:支持Git协议v2,提升性能

Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。 这就意味着,G...

linux-tao
19分钟前
0
0
python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
36分钟前
24
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
42分钟前
0
0
PowerDesigner 16.5 安装配置

PowerDesigner16.5破解版是一款业内领先且开发人员常用的数据库建模工具,PowerDesigner可以从物理和概念两个层面设计数据库,方便用户制作处清晰直观的数据流程图和结构模型,欢迎有需要的朋...

Gibbons
今天
0
0
mac Homebrew 指令积累

1通用命令 brew install [包名] //安装包 brew list //列举安装的包 brew info [包名] // 显示安装包的详细信息 mysql 相关 #启动mysql 服务 brew service start mysql my...

Kenny100120
今天
0
0
前端Tips: 创建, 发布自己的 Vue UI 组件库

创建, 发布自己的 Vue UI 组件库 前言 在使用 Vue 进行日常开发时, 我们经常会用到一些开源的 UI 库, 如: Element-UI, Vuetify 等. 只需一行命令, 即可方便的将这些库引入我们当前的项目: n...

ssthouse_hust
今天
1
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
今天
5
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
今天
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
今天
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部