游戏开发中,纹理是十分重要的资源,关系到游戏的大小、内存的消耗、运行的速度和渲染的质量,但很多的美术同学没有相关的技术背景,导致交付的纹理资源,与程序的要求有出入,本文就介绍一下程序中是如何使用纹理的,以及美术可以做哪些事情来优化纹理资源,达到最终性能的提升。
纹理的生命周期
纹理的声明从美术画出图像开始,到渲染在屏幕上结束,可以分为以下几个阶段。
美术通过PS或其他产生 -> 存储到磁盘(png/jpg等) -> 程序处理(合图等) -> 加载到内存 -> 传输到显存 -> GPU渲染 -> 显示到屏幕
其中美术的工作到第二步为止,后面的,都是技术的事。
纹理如何影响性能
一步一步来说
存储到磁盘(png/jpg等)
纹理有很多种压缩格式,一般来说,可以分为两大类,硬盘格式
和GPU格式
。
- 硬盘格式:常用的如(png/jpg)之类,这种格式主要用作将纹理存储在硬盘,采用全局压缩,优点是压缩比大,缺点是程序加载时需解压,所以加载速度慢,占用内存大。
- GPU格式:如(etc/pvr)之类,这种格式主要用作GPU的渲染,采用局部压缩,优点是程序加载时不需解压,所以加载速度快,占用内存小,缺点是压缩比小。
如果为了减少包体的大小,就要采用硬盘格式;如果是为了加快运行的性能,则要采用GPU格式。
不管为了什么目的,采用哪种格式,都应尽量减少纹理的数量、大小和尺寸。
加载到内存
纹理资源一般是游戏中资源的大头,当加载不是那么小的场景时,这种加载过程不是一瞬间可以完成的,所以一般都有一个加载进度条之类的界面。
纹理的加载过程主要可以分为两个阶段:文件读取<