加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2d-X的纹理(1)

发布时间:2020-12-14 20:34:57 所属栏目:百科 来源:网络整理
导读:原文地址: ?? http://www.geekfaner.com/cocos2d-x/ReadCocos2dxSourceCode15.html 课程概述 “Cocos2d-X的纹理(1)”课程概述 游戏中的UI元素各种各样,栩栩如生,而这些UI元素的形状依靠的是顶点坐标,色彩大多都是依靠纹理,纹理也是OpenGL ES中的重要概念
原文地址:
??

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(用于在纹理坐标超出纹理尺寸的采样行为)。多级纹理是借用原始纹理生成很多隶属于该纹理的小纹理,借用这些纹理来完成采样。多级纹理可以在游戏中生成,也可以在纹理素材中包含。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读