Cocos2d-X的纹理(1)

原文地址:


http://www.geekfaner.com/cocos2d-x/ReadCocos2dxSourceCode15.html

课程概述

“Cocos2d-X的纹理(1)”课程概述

     游戏中的UI元素各种各样,栩栩如生,而这些UI元素的形状依靠的是顶点坐标,色彩大多都是依靠纹理,纹理也是OpenGL ES中的重要概念。本节课将讲述Cocos2d-X的纹理。

课程笔记

如何将纹理对应到屏幕上

     在(Cocos2d-X的核心OpenGL ES)一节中,我们知道了如何将Cocos2d-X的一个UI元素,从本地坐标系,经过矩阵变换,转换到世界坐标系,再经过模型视图矩阵、投影矩阵,转换到裁剪坐标系,再经过视口变换,对应到屏幕上的一个个点(像素)。然而在世界坐标系中的每一个点,不仅对应着一个坐标变量,还对应着一个纹理坐标,指定该点对应纹理中的某个点。顶点坐标为(x、y、z、w),纹理坐标在纹理图片中为(u、v),u、v是纹理的宽度和高度,在fragment shader的纹理坐标为(s、t),为(u、v)的归一化坐标。在光栅化的时候,生成像素点的顶点坐标,并使用插值smooth(或者非插值flat)的方法生成每个像素点的纹理坐标(颜色、深度等),使得屏幕上的点可以与纹理图片中对应。

      但是屏幕上的点是离散的,经过了光栅化,一条斜线就是由一些不在一条直线上的点组成,会出现锯齿,为了反锯齿,可以使用多重采样。多重采样,就是在图片的边缘部分,framebuffer上的每个点的颜色不仅是该像素点由fragment shader生成的颜色决定,而是利用了多重采样缓冲区,由该点附近多个位置的颜色、depth、stencil决定。Cocos2d-X默认没有打开多重采样,可以打开并设置multisample buffer的数量,原因是Cocos2d-X主要用于2D游戏的开发,大部分UI元素是规则而且垂直于摄像机。打开多重采样效果好,但是影响性能。

如何将CPU中的纹理图片传入GPU

     纹理图片在CPU一般是压缩格式,比如png、jpg,需要解压成glTexImage2D认识的格式,Cocos2d-X提供这样的方法。然后,通过glTexImage2D函数,输入参数为format(纹理图片在CPU中的分量组成),type(纹理图片在CPU中的存储格式和分量组成方式),internalformat(纹理图片在GPU中的分量组成方式)。纹理图片经历了解包、归一划、转换为RGB格式、归一划的过程,存储到了GPU中,在内存中,需要按照UNPACK_ALIGNMENT对齐。当CPU的纹理图片unpack到了GPU,开发者可以把CPU端的纹理图片删除。

纹理属性

     可以对纹理设置其属性,包括filter(用于纹理图片于显示区域并非11对应的时候,将纹理图片中的点对应到屏幕上的时候,确定如何采样。)wrap mode(用于在纹理坐标超出纹理尺寸的采样行为)。多级纹理是借用原始纹理生成很多隶属于该纹理的小纹理,借用这些纹理来完成采样。多级纹理可以在游戏中生成,也可以在纹理素材中包含。

      纹理的存储格式影响着应用程序包的大小,也占据了游戏的大部分内存。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值