图片显存计算
显存容量=显示分辨率×颜色位数/8bit
注意,图片在显存中的占用空间和存储时的占用空间,是不同的概念,显存主要是解码后的每个点的数据,文件数据要看你的格式、压缩比、文件头、附加信息等等,因此文件数据和图片在内存和显存中的数据差别可能会很大。
以下图为例
直接查看属性,可以看到,文件大小,41.8KB,170*153分辨率,占用空间44.0KB,占用空间和文件本身大小差距不大,存储文件占用的内存受到文件格式、压缩比等的影响。但是项目中调用这张图片资源时,占用的显存却并不是44KB或者41.8KB。运行显存包含解码后每个像素点的数据。
计算显存
显存容量=显示分辨率×颜色位数/8bit
注意这个公式的分辨率是显示分辨率,而不是图片分辨率
(图片所占显存大小 = 图片长度(像素) * 图片宽度(像素) * 一个像素所占内存空间(单位:字节) )
计算显存时,分辨率取的不是图片本身的分辨率,而是图片本身分辨率向上取2^n之后的分辨率,因为显存纹理的宽和高都要是2次幂数
属性详情显示位深(即颜色位数)为24位,故一个像素占用字节数为24/8(一个字节占用8位)=3,
2^4<170<2^5
2^4<153<2^5
所以图片占用显存大小为
2^5*2^5*3 = 192KB,远大于文件本身的41.8KB,因此,在项目设计时,散图资源如果在2^n附近时,尽量让美术修改到小于等于2^n大小。对游戏体验影响较大,并且可以极大降低显存,提升H5游戏流畅度。