cocos2dx学习

1.cocos2dx启动界面,图片是Default.png

2.TranstionFade:场景切换效果

3.添加元素在init里面,不要在onenter里面

4.TMXTileMap:瓦片地图,通过.tmx来创建地图

5.GUIReader:从json文件加载ui控件

6.SpriteFrameCache通过加载plist和png创建图片的frame cache,通过CreateWithSpriteFrameName(“xx.png“)从帧缓存中查找图片来创建sprite

7.Sprite->loadTexture(“xx.png”,Widget::TextureResType::PLIST)可以从图片帧缓存中加载纹理

8.EaseSineOut:动作由快到慢

9.Node现在有pause(),可以让node停止update()。

10.Cocos2d3.0新增加的特性Value,表示任意普通类型

11.Ui和动画的加载

Ui的话直接从json文件创建就是了

动画的话先要加载动画json文件,然后创建骨骼动画,不用的时候记得要移除动画json文件

12.Animation,其实是由许多精灵帧构成(精灵帧表示为:AnimationFrame,可以通过getSpriteFrame获取到cocos2d的spriteFrame),可以设置播放持续时间等动画相关属性。要生成一个动画步骤如下:

通过一个animation创建一个Animate,Aniamte* action = Aniamte::create(animation);Animate实际上是一个action

sprite->runAction(action);

13.cocos2dx各种Size

frameSize,手机的分辨率,这是不变的(图中为HIJK)

winSize,设计分辨率,相当于游戏设计的逻辑大小。可以将frameSize理解为画框,winSize为画布

visibleSize就是画布在画框中额部分,大小其实是用winSize来表示的

visibleOrigin就是visibleSize在画框中的左下角坐标点

如下示例:

FrameSize:假设为width = 720, height = 420

WinSize:假设为width = 360, height = 240

在kResolutionNoBorder模式下,实例图像如下:

 

此时的VisibleSize就是HIKJ,此时的VisibleSize为Width = 360, height = 210。

因为FrameSize的长宽比为 720 :420 = 360 :210,而我们的设计分辨率为 360 :240,所以在kResolutionNoBorder模式下,被画框截下来的设计分辨率就为360:210

此时的VisibleOrigin就是在VisibleSize中的K,坐标为(0,15),右图中可以看出 15 = (240-210)/2

14.屏幕适配, glview->setDesignResolutionSize设置的是一屏内显示的像素数量,即winSize的大小。

kResolutionNoBorder:超出屏幕被剪裁,铺满屏幕

kResolutionShowAll:会按照原始比例进行缩放,2侧可能有黑边,不铺满屏幕

kResolutionExactFit:2边都铺满,图片会变形。

15.字体:

ttf字体,别人做好的字体,需要在网上找,然后放到Resources文件夹下面

fnt可以自己制作字体

16.cocos2d自己的vector具有自动对Ref添加移除引用计数的功能。

17.rotation顺时针旋转为正,逆时针为负

19.可以一批次渲染的要求:shader,混合函数,纹理id必需全部相同

20.3.x版本增加了 localZorder 和gloabalZorder的概念。

21.shader的使用:

加载shader源文件,glCompileShader生成vertex和fragment shader,再glLinkProgram链接shader。不用的时候要glDeleteShader。这些都是封装在cocos2dx的GLProgram里面的。

在使用的时候通过glUseProgram来加载shader

3.x版本再通过glprogramstate来管理node的glprogram

GLProgram是通用的,而GLProgramState是每个node私有的,存放了uniform值

22.sprite默认的shader:

ccShader_PositionTextureColor_noMVP.vert ,接收顶点信息,只是将顶点坐标做常规转换(传入的顶点坐标*传入的矩阵),有2个varying变量接收顶点颜色和纹理坐标

ccShader_PositionTextureColor_noMVP.frag,根据上面传入的纹理坐标采样纹理颜色,再乘以顶点颜色,得到最终颜色

23.TextureAtlas,纹理集,通过一个纹理创建,并初始化容量。通过添加纹理多边形描述(1个quads),一次性渲染。只能公用一个shader和混合函数

24.Cocos2dx的3d知识:

有一个Sprite3D,可以通过2中方法创建:

a  通过.obj,.c3b,c3t文件 (obj是静态模型,不支持动画,c3b和c3t是动画,c3b是二进制文件,c3t是json文件)。这三种文件其实是通过将3dmax的fbx文件通过自带工具转换的

b 不带素材的.obj文件,自己设置素材

25.spriteframeCache缓存小图像的时候,key是图像名字,非全路径。所以注意图片命名

26.clampf(float value, float min_inclusive, float max_inclusive)将value限制在min_inclusive和max_inclusive之间

27.mipmap用于解决纹理映射时,在不同分辨率下的适应问题。比如同一张纹理显示在10*10或者20*20...的情况下不至于失真。它实现的原理是存储多种纹理尺寸,在映射的时候选择一张最合适的进行映射。这样可解决图像的闪烁,并且解决大纹理显示的效率问题。但同时会造成内存使用变大的问题。glGenerateMipMap用于产生mipmap。

28. cocos2d的纹理,在生成的时候就将纹理数据推送到opengl缓存区域。在Texture2D内部只保留了一个opengl纹理数据的索引。在删除纹理的时候,只需要将opengl缓存的纹理数据删除。

29. 3.2版本的cocos2d在判断图片格式的时候已经不再使用文件后缀名了。而是通过判断图像的头数据。

30.在cocos2d的shader在执行compileShader的时候会加上几个常用uniform,比如mvpMatrix,CC_Texture0。在fragshader中进行纹理采样:texture2D(CC_Texture0, v_texCoord)。注意CC_Texture0的值为0。opengl允许同时使用多张纹理。激活纹理的方式是:glActiveTexture(激活第几号纹理)。cocos2d默认绑定到0号纹理。当然也提供了bindTexture2DN,指定绑定到几号纹理。

转载于:https://my.oschina.net/yizhangxyz/blog/611918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值