kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 工业|计算机|互联网 > 电子、计算机、网络

我所理解的Cocos2d-x

  • 作者:[中] 秦春林
  • 体积:7.97 MB
  • 语言:中文
  • 日期:2019-01-07
  • 推荐:

简介:《我所理解的Cocos2d-x》针对最新的 Cocos2d-x 3.x版本,介绍了Coco2d-x游戏引擎的基本架构、渲染机制,以及各个子模块的功能和原理,并结合OpenGL ES图形渲染管线,深入探讨了游戏开发中涉及的相关图形学的知识。

电子书详细介绍

 《我所理解的Cocos2d-x》针对最新的 Cocos2d-x 3.x版本,介绍了Coco2d-x游戏引擎的基本架构、渲染机制,以及各个子模块的功能和原理,并结合OpenGL ES图形渲染管线,深入探讨了游戏开发中涉及的相关图形学的知识,内容包括:Cocos2d-x的基本架构及渲染机制、纹理相关的知识、OpenGL ES2.0渲染管线、计算机字体的绘制、多分辨率支持、事件分发、碰撞与物理引擎、游戏对象模型架构、Genius-x开源框架、脚本在游戏引擎中的架构等。《我所理解的Cocos2d-x》偏重讲解每个知识模块的概念及原理,使读者能够透过现象看到其背后的工作机制,所以本书在内容组织上并不是围绕Cocos2d-x的接口使用来展开,而是按照通用游戏引擎架构及图形学的内容进行组织。
《我所理解的Cocos2d-x》面向中、高级开发者,可作为初级开发者进阶的教程,也可作为高校游戏引擎架构及图形学相关专业的参考教材。

编辑推荐

《我所理解的Cocos2d-x》完全基于Cocos2d-x3.0,深度剖析计算机图形学,OpenGL ES及游戏引擎架构,全面提升游戏开发相关知识。

作者简介

秦春林,自大学开始自学编程,先后从事过工作流软件,云计算,Web等相关的工作。2011年开始进入游戏开发领域,主持并移植了Cocos2d-x-for-XNA项目。喜欢技术分享,发起并组织了北京快乐技术沙龙,多次作为讲师参与微软,CSDN,51CTO以及9RIA等组织的各类技术培训和讲座。参与了手游项目《天降》的开发,目前主要的兴趣方向是计算机图形学和游戏引擎架构,致力于用软件技术丰富游戏世界的表现及品质。

 

目录

第1章全新的Cocos2d—x3.01 
1.1Cocos2d—x3.0的历史意义1 
1.1.1回归C++风格2 
1.1.2更灵活的渲染架构2 
1.1.3更自由的发展2 
1.2Cocos2d—x3.0的新特性3 
1.2.1使用C++风格3 
1.2.2跨平台的Label6 
1.2.3新的渲染系统6 
1.2.4统一的消息分发8 
1.2.5物理引擎集成9 
1.2.6新的数据结构10 
1.2.7其他14 
1.3Cocos2d—x引擎展望15 
1.3.13D16 
1.3.2CocosCodeIDE16 
1.4本章小结17 
第2章Cocos2d—x架构一瞥19 
2.1Cocos2d—x引擎系统总览19 
2.2Cocos2d—x内存管理机制21 
2.2.1C++显式堆内存管理21 
2.2.2C++11中的智能指针22 
2.2.3为什么不使用智能指针23 
2.2.4垃圾回收机制23 
2.2.5Cocos2d—x内存管理机制24 
2.2.6Cocos2d—x中的智能指针29 
2.2.7怎样进行内存管理35 
2.3UI树及运行时游戏对象35 
2.3.1位置与变换35 
2.3.2坐标系36 
2.3.3UI树39 
2.3.4UI元素与内存管理45 
2.4应用程序架构46 
2.4.1游戏生命周期46 
2.4.2窗口尺寸48 
2.4.3场景管理48 
2.4.4游戏循环49 
2.5实时更新游戏对象52 
2.5.1帧率52 
2.5.2Scheduler53 
2.5.3时间线54 
2.5.4逻辑更新优先级55 
2.5.5性能问题56 
2.6Cocos2d—x的主线程56 
2.6.1在主线程中执行异步处理57 
2.6.2纹理的异步加载58 
2.6.3异步处理的单元测试60 
2.7本章小结60 
第3章OpenGLES2.0概览62 
3.1图形处理器简介62 
3.2什么是OpenGLES63 
3.3OpenGLES2.0渲染管线64 
3.3.1顶点数组65 
3.3.2顶点着色器66 
3.3.3图元装配66 
3.3.4光栅化69 
3.3.5片段着色器70 
3.3.6片段测试70 
3.4渲染管线中的并行计算71 
3.5构建高性能的渲染引擎72 
3.6帧缓冲73 
3.7本章小结74 
第4章全新的绘制系统76 
4.1新绘制系统的特点76 
4.2绘制系统概览77 
4.3RenderCommand79 
4.4RenderQueue80 
4.5GroupCommand81 
4.6Render84 
4.6.1RenderCommand的排序84 
4.6.2QuadCommand85 
4.7元素的可见性87 
4.8绘制的时机89 
4.9示例:自定义RenderCommand91 
4.10本章小结95 
第5章纹理96 
5.1光栅化96 
5.1.1多重采样97 
5.1.2纹理坐标98 
5.2像素矩形99 
5.2.1像素存储模式99 
5.2.2纹理数据的传输99 
5.2.3解包100 
5.3客户端图像格式103 
5.3.1纹理格式的对应关系104 
5.3.2图像数据格式转换105 
5.4纹理对象和加载纹理107 
5.5纹理单元与多重纹理109 
5.6纹理缩放110 
5.6.1纹理缩小110 
5.6.2纹理放大111 
5.6.3在Cocos2d—x中设置过滤模式112 
5.7多级纹理113 
5.7.1多级纹理过滤模式113 
5.7.2多级纹理的上传114 
5.7.3多级纹理的生成115 
5.8纹理压缩116 
5.8.1压缩纹理的特点116 
5.8.2压缩纹理的实现117 
5.8.3在Cocos2d—x中使用压缩纹理118 
5.8.4PVRTC和PVRTC2120 
5.8.5ETC122 
5.8.6针对不同设备使用不同的压缩纹理123 
5.9纹理缓存管理123 
5.9.1纹理的生命周期124 
5.9.2用TextureCache来管理纹理125 
5.9.3场景过渡中的资源管理127 
5.9.4Android下的纹理恢复处理130 
5.10纹理所占内存的计算131 
5.11使用纹理最佳实践133 
5.11.1硬件层面133 
5.11.2程序层面133 
5.11.3资源层面134 
5.12本章小结135 
第6章精灵137 
6.1用Sprite绘制一个矩形区域137 
6.1.1V3F_C4B_T2F_Quad结构体138 
6.1.2使用QuadCommand进行绘制139 
6.1.3将Sprite作为子元素140 
6.2Sprite的绘制属性140 
6.2.1颜色混合141 
6.2.2颜色叠加144 
6.3Alpha预乘148 
6.4精灵表150 
6.5精灵动画152 
6.6批绘制还是自动批绘制154 
6.6.1SpriteBatchNode154 
6.6.2TextureAtlas156 
6.6.3SpriteBatchNode的特点和限制157 
6.7部分拉伸:九宫格157 
6.8本章小结158 
第7章OpenGLES着色语言161 
7.1概览161 
7.2基础类型162 
7.2.1空类型163 
7.2.2布尔类型163 
7.2.3整型163 
7.2.4浮点型163 
7.2.5矢量164 
7.2.6矩阵164 
7.2.7采样器164 
7.2.8结构体165 
7.2.9数组165 
7.3存储限定符166 
7.3.1默认限定符167 
7.3.2常量限定符167 
7.3.3属性限定符167 
7.3.4全局限定符168 
7.3.5易变量限定符169 
7.4构造器170 
7.4.1标量的转换构造170 
7.4.2矢量和矩阵构造器171 
7.4.3结构体构造器172 
7.5矢量的分量173 
7.6矩阵的分量174 
7.7结构体和成员174 
7.8矢量和矩阵操作符175 
7.9本章小结176 
第8章OpenGLES着色程序177 
8.1顶点和顶点数组177 
8.1.1图元与顶点178 
8.1.2顶点属性状态178 
8.1.3顶点数组180 
8.2顶点缓冲对象185 
8.2.1顶点数组缓冲对象187 
8.2.2索引数组缓冲对象188 
8.2.3使用VAO缓存顶点数组状态190 
8.3着色器程序192 
8.3.1着色器程序字符串192 
8.3.2着色器的加载和编译193 
8.3.3着色器程序对象195 
8.4Cocos2d—x着色器子系统196 
8.4.1GLProgram与Node之间的关系197 
8.4.2GLProgramState199 
8.4.3着色器程序的使用过程202 
8.4.4GLProgramState的管理204 
8.4.5GLProgramState的限制205 
8.5顶点着色器206 
8.5.1输入参数206 
8.5.2顶点坐标输出参数207 
8.5.3易变量输出参数208 
8.6片段着色器209 
8.6.1输入参数210 
8.6.2纹理采样210 
8.6.3输出参数211 
8.7着色器编辑工具211 
8.8示例213 
8.8.1使用ETC压缩纹理214 
8.8.2动态设置着色器参数217 
8.9着色器程序最佳实践220 
8.10本章小结220 
第9章帧缓冲223 
9.1GroupCommand223 
9.1.1使用GroupCommand的流程224 
9.1.2GroupCommand的限制225 
9.2帧缓冲226 
9.2.1绑定和管理帧缓冲227 
9.2.2将图像附加到帧缓冲228 
9.2.3渲染缓冲对象228 
9.2.4将Renderbuffer附加到帧缓冲230 
9.2.5将Texture附加到帧缓冲230 
9.2.6帧缓冲完成状态231 
9.3RenderTexture234 
9.3.1RenderTexture的初始化235 
9.3.2RenderTexture的绘制238 
9.3.3ReadPixels239 
9.3.4RenderTexture的限制及用途240 
9.4本章小结240 
第10章片段操作242 
10.1片段操作简述242 
10.2逻辑缓冲区243 
10.2.1位平面244 
10.2.2按位计算245 
10.3片段测试248 
10.3.1模板测试248 
10.3.2深度测试250 
10.3.3模板测试的步骤251 
10.3.4片段测试的用途252 
10.4全缓冲区操作254 
10.4.1控制缓冲区的更新254 
10.4.2清理缓冲区254 
10.5ClippingNode255 
10.5.1ClippingNode的绘制流程255 
10.5.2ClippingNode的模板测试分析256 
10.6本章小结258 
第11章多分辨率支持259 
11.1概述259 
11.2设计分辨率260 
11.2.1缩放策略261 
11.2.2调整元素位置262 
11.2.3几个有用的变量263 
11.2.4使用屏幕分辨率264 
11.2.5视口设置264 
11.2.6什么时候缩放了265 
11.3资源分辨率267 
11.3.1资源分辨率的设置267 
11.3.2真实分辨率InPixels268 
11.3.3什么时候缩放资源269 
11.4本章小结270 
第12章事件分发272 
12.1概述272 
12.1.1什么是事件272 
12.1.2事件的工作机制272 
12.1.3事件系统的特点273 
12.2订阅者274 
12.2.1事件类型275 
12.2.2注册与管理订阅者276 
12.3事件的分发278 
12.3.1订阅者的排序280 
12.3.2嵌套事件282 
12.3.3在事件分发中修改订阅者282 
12.3.4停止分发事件283 
12.4事件与Node284 
12.4.1暂停与恢复284 
12.4.2删除订阅者285 
12.5触摸事件285 
12.5.1EventListenerTouchAllAtOnce286 
12.5.2EventListenerTouchOneByOne286 
12.5.3单点和多点触摸之间的关系288 
12.5.4触摸点的位置判断288 
12.5.5可见性与触摸事件289 
12.6其他289 
12.6.1其他操作系统事件290 
12.6.2EventCustom290 
12.6.3内存管理290 
12.6.4回调与返回值291 
12.6.5单元测试291 
12.6.6其他事件291 
12.7本章小结292 
第13章字体的故事293 
13.1计算机字体的历史293 
13.2轮廓字形概述294 
13.2.1点295 
13.2.2轮廓295 
13.2.3轮廓的方向296 
13.2.4轮廓的交叉296 
13.2.5混合轮廓字形296 
13.2.6字形格子297 
13.3FreeType字体引擎297 
13.3.1字体文件及字形索引298 
13.3.2字符度量298 
13.3.3FreeType字形解析过程299 
13.3.4FreeType字形装载301 
13.4FontAtlas304 
13.4.1Font305 
13.4.2FontAtlasCache308 
13.5Label309 
13.5.1通用属性310 
13.5.2Font字符集312 
13.5.3轮廓字体的缩放312 
13.5.4特效316 
13.6使用字体的最佳实践319 
第14章动画系统321 
14.1概述321 
14.2线性插值323 
14.2.1标量插值323 
14.2.2矢量插值323 
14.2.3变换矩阵插值324 
14.2.4插值在动画系统中的运用324 
14.3给元素添加动画326 
14.3.1Action是一个自描述的对象326 
14.3.2在Node上执行动画327 
14.3.3控制动画的动画329 
14.4动画系统架构331 
14.4.1Speed333 
14.4.2缓动函数333 
14.4.3自定义动画——精灵闪白334 
14.5本章小结337 
第15章碰撞及物理引擎339 
15.1物理引擎概述339 
15.2碰撞检测系统340 
15.2.1刚体340 
15.2.2接触和碰撞343 
15.2.3碰撞查询348 
15.3刚体动力学349 
15.3.1控制刚体的运动349 
15.3.2碰撞响应350 
15.3.3约束351 
15.4整合物理引擎352 
15.4.1刚体与可视对象352 
15.4.2物理世界355 
15.4.3游戏循环阶段357 
15.5预处理与工具357 
15.6本章小结358 
第16章运行时游戏对象模型360 
16.1概述360 
16.2运行时游戏对象模型361 
16.2.1以对象为中心的架构362 
16.2.2组件模型364 
16.2.3以属性为中心的架构367 
16.3EntityComponentSystem369 
16.3.1属性结构370 
16.3.2分离数据与行为371 
16.3.3数据驱动372 
16.4对象查询与消息通信373 
16.4.1根据唯一标识符查询374 
16.4.2根据类型查询375 
16.4.3面向类型编程375 
16.4.4游戏对象数据库376 
16.5实时更新游戏对象377 
16.5.1更新的性能优化377 
16.5.2更新的时序377 
16.6本章小结379 
第17章Genius—x开源框架381 
17.1Genius—x是什么381 
17.1.1Genius—x架构一览382 
17.1.2Genius—x项目结构及使用384 
17.2游戏对象模型385 
17.2.1Entity385 
17.2.2Component388 
17.2.3System391 
17.2.4ECSManager394 
17.2.5数据驱动397 
17.2.6NodeCom399 
17.2.7对象的层级结构403 
17.3数据格式、加载及串流403 
17.3.1数据格式404 
17.3.2文件加载和管理405 
17.3.3游戏世界的串流406 
17.4游戏通用系统407 
17.5共享组件409 
17.6示例409 
第18章脚本411 
18.1脚本的概念411 
18.1.1脚本语言的特征412 
18.1.2Lua脚本语言412 
18.1.3脚本所需的架构413 
18.2运行时脚本语言的功能415 
18.2.1对原生编程语言的接口415 
18.2.2游戏对象句柄416 
18.2.3在脚本中接收及处理事件423 
18.2.4发送事件427 
18.2.5面向对象脚本语言427 
18.3Luabindings430 
18.3.1生成绑定代码430 
18.3.2在程序中使用绑定代码431 
18.3.3自定义绑定432 
18.4在Lua中使用Genius—x433 
18.4.1配置环境433 
18.4.2创建Component脚本433 
18.4.3创建System脚本434 
18.4.4其他接口435 
18.5本章小结435 
参考文献437

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×