简介:

精灵是2D游戏里最重要的元素。游戏场景中大部分可见的元素都直接或间接地与精灵相关。

在Cococs2d-xz中,精灵使用Sprite表示,它将一张纹理的一部分或者全部的矩形区域绘制在屏幕上。

使用精灵表(将多个精灵合并在一个纹理上)可以减少OpenGL ES绘制的次数。

Sprite也可以用来播放动画,也可以设置其颜色,或与场景中其他元素的混合模式等

另外,一些复杂的元素,譬如地图、粒子系统、字体等,则是基于Sprite构建的。

--------------------------------------------------------------------------------------------------

1、CCSprite.h头文件定义

Sprite is a 2d image ( http://en.wikipedia.org/wiki/Sprite_(computer_graphics) )

class CC_DLL Sprite : public Node, public TextureProtocol

2、

V3F_C4B_T2F_Quad结构体,定义位于base/ccTypes.h

所有对Sprite绘制属性的修改(混合模式除外)

最终都表现为对V3F_C4B_T2F_Quad结构体类型变量quad的修改

3、Sprite的绘制方式

对于Sprite自身的draw方法,在其每一帧被调用的时候,Sprite会通过Renderer提供的

checkVisiblity方法来判断自身是否处于视窗可见范围内,如果其不可见,则不会发送任何绘制命令到OpenGL ES。

不仅减少了GPU计算的浪费,也减少了Renderer对RenderCommand进行排序的时间。

4、

除了通过修改纹理和设置不同的纹理区域使Spriite显示不同的内容,还可以:

(1)颜色混合:用来指定当前Sprite与颜色缓冲区中【相同位置】颜色值的混合方式

(2)颜色叠加:将一个颜色值作用在一个图层或者精灵上

5、

利用精灵表我们可以对同一次绘制指定更多的顶点来减少OpenGL ES的绘制次数。

Cocos2d-x使用SpriteFrameCache加载精灵表以及缓存每一个精灵的信息。、

其通过解析配置文件将精灵表中每一个精灵存储为一个SpriteFrame对象。

每一个SpriteFrame对象包含该精灵的纹理、尺寸、在纹理中的位置等信息。

需要注意的是,SpriteFrameCache并不提供移除对应于Texture2D对象对的功能。

6、

在2D游戏中,精灵动画分为关键帧动画和骨骼动画。

每个精灵动画都是由一个或多个动画组构成的,每个精灵动画都有一个配置文件来

存储这些动画组中相应的动画信息。

7、

SpriteBatchNode类

SpriteBatchNode is like a batch node: if it contains children, it will draw them in 1 single OpenGL call

其addChild方法限制其子元素只能是Sprite

并且子元素与SpriteBatchNode必须使用同一个Texture2D对象。

Node类中的visit方法用于递归遍历节点的children并且draw

而SpriteBatchNode类重写了visit方法,用于阻止元素向下遍历,将所有子元素的绘制工作交给自己处理。

8、

TextureAtlas类位于renderer/CCTextureAtlas.h

SpriteBatchNode使用TextureAtlas存储所有子精灵的顶点信息。

SpriteBatchNode所做的主要事情就是将与子元素相关的顶点信息存储至TextureAtlas中。

9、

SpriteBatchNode适合那些比较简单的模型,他们的子元素只能来自同一个纹理,

这些子元素也都位于同一相邻层级,甚至不会重叠。

10、

Scale9Sprite根据九宫格的分布构造了9个Sprite元素,只对中间的Sprite进行缩放

这些Sprite全部被假如一个SpriteBatchNode中。

【我所理解的Cocos2d-x】第六章 精灵Sprite 读书笔记的更多相关文章

  1. 《Java并发编程实战》第六章 任务运行 读书笔记

    一. 在线程中运行任务 无限制创建线程的不足 .线程生命周期的开销很高 .资源消耗 .稳定性 二.Executor框架 Executor基于生产者-消费者模式.提交任务的操作相当于生产者.运行任务的线 ...

  2. 图解 TCP/IP 第六章 TCP与UDP 笔记6.1 传输层的作用

     图解 TCP/IP  第六章 TCP与UDP   笔记6.1 传输层的作用   传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码.根据端口号,就可以识别在传输层上一层的应用程 ...

  3. 《深入理解java虚拟机》第六章 类文件结构

    第六章 类文件结构   6.2 无关性的基石 各种不同平台的虚拟机与所有的平台都统一使用的程序存储格式--字节码(ByteCode)是构成平台无关性的基石.java虚拟机不和包括java在内的任何语言 ...

  4. 【深入理解计算机系统CSAPP】第六章 存储器层次结构

    6 存储器层次结构 存储器系统(memory system)是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU 寄存器保存着最常用的数据.靠近 CPU 的小的.快速的高速缓存存储器(cac ...

  5. 简单直白的去理解AOP,了解Spring AOP,使用 @AspectJ - 读书笔记

    AOP = Aspect Oriental Programing  面向切面编程 文章里不讲AOP术语,什么连接点.切点.切面什么的,这玩意太绕,记不住也罢.旨在以简单.直白的方式理解AOP,理解Sp ...

  6. 0005-20180422-自动化第六章-python基础学习笔记

    day6 内容回顾: 1. 变量 2. 条件 3. while循环 4. 数据类型 - int - bit_length - bool - True/False - str - upper - low ...

  7. 《深入理解Nginx:模块开发与架构解析》读书笔记

    1.nginx的特点:快.扩展性强.可靠性强.内存低消耗.支持高并发.热部署.开源免费 2.nginx由master进程来管理多个(CPU数)worker进程 3.配置按功能分,有4类: 1)用于调试 ...

  8. 深入理解 C 指针阅读笔记 -- 第六章

    Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct _ ...

  9. 《深入理解java虚拟机》读书笔记五——第六章

    第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...

随机推荐

  1. HDU-4534 郑厂长系列故事——新闻净化 AC自动机+DP

    题意:给定一些单词,这些单词必须要是一个目标串的子串,同时给定一些串,这些串不能够出现在目标串中,其余一些串只会带来不同附加值.现在问满足前两者的情况下,要求附加值最大.数据给定一个原始串,现在要求在 ...

  2. iOS AFNetworking中cookie的读取与设置

    参考: http://blog.csdn.net/zhaoxy_thu/article/details/20532879 实际上AFNetworking中并没有专门针对cookie封装的代码,但是由于 ...

  3. Software Engineering: 1. Introduction

    Resource: Ian, Sommerville, Software Engineering 1. Professional software development 1.1 Software e ...

  4. StringBuffer delete

    描述 java.lang.StringBuffer.delete() 方法将删除这个序列的一个子字符串中的字符. 子字符串的开始在指定的start和延伸处的字符索引end - 1或结束的序列,如果不存 ...

  5. spark1.5 scala.collection.mutable.WrappedArray$ofRef cannot be cast to ...解决办法

    下面是我在spark user list的求助贴,很快就得到了正确回答,有遇到问题的同学解决不了也可以去上面提问. I can use it under spark1.4.1,but error on ...

  6. (AS3)关于arguments

    一.官方说明 点击访问 二.使用心得 arguments包含了当前执行方法的参数,注意,不包含默认参数! arguments可以全局访问,可以在任何方法里访问,除此之外,在定义变量的时候或者初始化的时 ...

  7. linux查看及改变运行级别

    Linux运行级别从0-6,共7个. 0:关机.不能将系统缺省运行级别设置为0,否则无法启动. 1:单用户模式,只允许root用户对系统进行维护. 2:多用户模式,但不能使用NFS(相当于Window ...

  8. 初学UML——用例图

    开始学习UML建模语言,从用例图入手.建模工具选择visio 用例图描述的是参与者所理解的系统功能,主要元素是用例和参与者,是帮助开发团队以一种可视化的方式理解系统的功能需求.这时处于项目初始,分析用 ...

  9. 读<jQuery 权威指南>[5]-插件

    一.说明 jQuery插件官网:http://plugins.jquery.com/ 使用插件时引用顺序:插件引用要位于主jquery库之后. 二.插件应用实例 演示插件jquery.validate ...

  10. 源代码tfs to git

    TFSàgit可以保留完整历史记录,方法: https://github.com/git-tfs/git-tfs 系统变量的path里加上: ;C:\Program Files (x86)\Git\b ...