Unity 常见的图像压缩格式优缺点

 在Unity中,将图像压缩至更小的大小,既可以加快加载速度,也可以减少内存的占用。根据不同的目标平台,Unity提供了以下几种常见的图像压缩格式:

1. RGBA Compressed: 是一种通过压缩的方式来存储RGBA(红色、绿色、蓝色和透明度)的四个通道的图片格式。

优点:

  • 体积小,节省空间:通过对RGBA通道进行压缩,相较于未压缩的RGBA格式,可以大大降低文件的体积,节省存储空间。  

  • 完整的色彩信息:由于RGBA Compressed同时包含了红色、绿色、蓝色和透明度四个通道,因此能够完整且详细地表现图像的色彩信息。 

  • 透明度通道:不仅可以存储RGB色彩信息,还可以存储透明度信息,在进行复杂的图像编辑和动画制作时非常有用。

缺点:

  • 有损压缩:虽然RGBA Compressed可以有效地减少文件大小,但它是一种有损压缩,因此可能会在一定程度上降低图片的质量。

  • 兼容性问题:尽管RGBA Compressed格式可以提供丰富的色彩和透明度信息,但并非所有的图像处理软件或设备都能完全支持此格式,可能存在兼容性问题。

  • 处理速度:由于需要进行压缩和解压缩操作,所以在处理大量的或者高分辨率的图像时,可能会相较于其他未压缩的格式更为耗时。

2. DXT:全称DirectX Texture Compression Format,是由Nvidia开发的一种在计算机图形绘制中常见的纹理压缩格式,常见于Windows平台的游戏中,包括DXT1,DXT3和DXT5。其中,DXT5是一种常见的压缩方式,它提供高达6:1的压缩比,但可能会牺牲一些图像详细度。在Unity中,DXT格式是默认的PC平台和游戏主机平台的纹理压缩格式。

优点:

  • 空间效率:DXT格式是一种有损压缩格式,能够将原始数据的体积减小到1/8或者1/4,为图形绘制提供更大的空间。

  • 显存效率:在运行时,DXT格式直接存储在GPU的显存中,提升了纹理读取的效率。

  • 兼容性:DXT格式得到了广泛的硬件支持,无论是桌面、移动设备或者游戏主机,大部分的设备都能够直接处理DXT格式的纹理。

缺点:

  • 图像质量:DXT格式是一种有损压缩格式,虽然能够显著减小数据体积,但是也会带来不可避免的图像质量损失。

  • 色彩问题:DXT格式在处理高色彩深度的图像时,可能会出现色块或者色带问题。

  • 压缩速度:相较于其他格式,DXT格式的压缩速度可能会稍慢一些。

3. PVRTC: PowerVR Texture Compression(PVRTC)是专为PowerVR系列的图形处理器设计的,主要用在iOS设备上。PVRTC的压缩比很高,可以达到8:1或4:1,但这种压缩方式可能会牺牲一部分图像质量。

优点:

  • 高压缩比:PVRTC提供了极高的压缩比,可以将图片体积减小到原来的1/2、1/4、1/8等,极大地节省了存储空间和带宽。

  • 支持多通道:PVRTC支持RGBA四通道,因此能够展示丰富的颜色和透明效果。

  • 实时解压:PVRTC可以在GPU侧实时解压,避免占用CPU资源,提高了性能。

缺点:

  • 图像质量:由于其是一种有损压缩方式,可能会导致一些图像质量损失。

  • 兼容性问题:PVRTC主要是为Imagination Technologies的PowerVR系列GPU设计的,对于非PowerVR GPU,可能会遇到兼容性问题。

  • 需要专门的工具进行压缩:创建PVRTC纹理需要使用专门的PVRTexTool,可能对某些开发者来说不太方便。

  • 压缩速度较慢:在某些情况下,PVRTC的压缩速度可能相比其他压缩格式较慢。

PVRTC格式通常在需要高效压缩和处理图像的移动设备上使用,但在使用时需要考虑到其可能的图像质量损失和兼容性问题。

4. ETC: 全称Ericsson Texture Compression(ETC)是一种面向OpenGL ES和WebGL的纹理压缩格式,专为Android设备设计的一种压缩格式。ETC1只支持RGB压缩,不支持Alpha通道,而ETC2则提供了对Alpha通道的支持。

优点:

  • 高压缩比:ETC能有效减少图像文件大小并维持相当高的图像质量,有利于在有限的内存空间和带宽下优化应用运行表现。

  • 广泛兼容:ETC拥有较好的跨平台性,适用于各种类型的设备,被广大基于OpenGL ES和WebGL的应用所接受。

  • 实时解压:ETC格式的纹理可以在GPU侧实时解压,避免占用CPU资源。

缺点:

  • 只支持RGB信息:ETC的标准版本仅支持RGB颜色,ETC1不支持透明度,而且压缩后图像质量可能会下降。ETC2虽然支持透明度,但是不是所有Android设备都支持ETC2。

  • 图像质量:与许多有损压缩算法一样,ETC压缩可能会牺牲一部分图像质量。

总的来说,ETC是为OpenGL ES和WebGL设计的优秀纹理压缩格式。它提供了一种平衡图像质量和存储需求的有效方式,适用于各种计算资源受限制的场景。

5. ASTC:全称 Adaptive Scalable Texture Compression(ASTC)是由ARM开发的一种高效的纹理压缩格式,是一种更加先进的压缩格式,支持各种纹理类型和细节级别。它在许多现代移动设备上都有支持。

优点:

  • 高效压缩:ASTC提供了高度适应的压缩能力,能够非常有效地减小纹理所占用的存储空间和内存带宽。

  • 灵活性:ASTC支持的纹理大小范围非常广,从4x4到12x12像素,甚至可以压缩3D纹理,提供了极大的灵活性。

  • 高质量:ASTC提供了良好的图像质量,并支持包括RGBA在内的多种颜色格式和渐变效果。

  • 硬件解压缩:ASTC格式的纹理可以在GPU侧进行解压,这有助于提高渲染性能并减低CPU的压力。

缺点:

  • 容性问题:虽然ASTC正在成为新标准,但仍存在一些设备不支持ASTC格式的情况,开发者需要考虑向后兼容问题。

  • 压缩速度:ASTC提供的块大小和压缩选项较多,这增加了压缩时间,压缩过程可能相对较长。

    总的来说,尽管ASTC在压缩时间和设备兼容性上可能有些问题,但其灵活性和压缩效果无疑使其成为移动设备和性能有限环境中的理想选择。

    每种纹理压缩格式都有其优点和缺点,所有这些压缩格式在选择时,都需要综合考量适应设备、图像质量要求、存储大小限制及性能需求等因素,确保最后的效果达到最佳。

好了,这一章就写到这,欢迎大家加入QQ群:280993838 。或者关注我的公众号:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国的茶文化:现代生活中的茶文化

中国的茶文化:现代生活中的茶文化 引言 在现代社会的快节奏生活中,茶文化并未随时间流逝而褪色,反而以其独特的方式融入了全球各地人们的日常生活。它超越了饮品本身的范畴,成为一种连接历史、人文与现代生活方式的艺术形式。本文…

Python算法题集_滑动窗口最大值

本文为Python算法题集之一的代码示例 题目239:滑动窗口最大值 说明:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗…

DevExpress WinForms中文教程 - 如何创建可访问的WinForms应用?(一)

为用户创建易访问的Windows Forms应用程序不仅是最佳实践的体现,还是对包容性和以用户为中心的设计承诺。在应用程序开发生命周期的早期考虑与可访问性相关的需求可以节省长期运行的时间(因为它将决定设计决策和代码实现)。 一个可访问的WinForms应用程序提供了各种…

【Python基础知识】(19)三种内置生成式

文章目录 一、列表生成式二 、字典生成式三、集合生成式 一、列表生成式 # 1. 列表生成式,语法:[被追加的数据 循环语句 循环或者判断语句] lst2 [i * 10 for i in range(10, 20)] print(lst2) # 输出:[100, 110, 120, 130, 140, 150, 160…

Python中类的相关术语(附带案例)

目录 1、面向对象 2、类 3、实例 4、初始化方法 5、魔法方法 6、字符串方法 7、self 8、数据、属性、操作、行为 9、父类、基类、超类 or 子类、派生类 10、多态 11、重载多态 and 重写多态 12、名称解释 1、面向对象 在Python中,面向对象编程&…

Qt关于qss文件的添加使用

把ui设计得更加的养眼,肯定需要对控件的属性进行设置,qt中就是关于qss文件的使用。 那么如何创建和添加qss文件呢 1.新建一个文本文件的txt 2.将文本文件的后缀改为qss(类比html) 3.放置到项目的资源文件夹下 4.添加资源文件 5.在…

代码随想录算法训练营第二二天| 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点

目录 二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点普通二叉树的删除方式 LeetCode 235. 二叉搜索树的最近公共祖先 LeetCode 701.二叉搜索树中的插入操作 LeetCode 450.删除二叉搜索树中的节点 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到…

windows安装oracle之后怎么连接使用

目录 1.打开SQl Developer 2.选择JDK 3.登录 4.创建表空间,用户 安装oracle的详细教程 WINDOWS安装Oracle11.2.0.4-CSDN博客 1.打开SQl Developer 找到 SQl Developer 2.选择JDK 根据你安装的oracle版本,因为我的oracle是安装的32位的,所以这里jdk也要选择32位 选择到ja…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环,根据迭代式对变量反复赋值。 求近似根(切线法); 迭代描述: x 0 x_0 x0…

Docker核心教程

1. 概述 官网:https://docs.docker.com/ Docker Hub 网站:https://hub.docker.com/ 容器较为官方的解释: 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立…

Threejs API——`OrbitControls`相机控件

文章目录 API用法API OrbitControls 相机控制用法 导入import {OrbitControls } from three/examples/jsm/controls/OrbitControls.js import {DRACOLoader,AmbientLight,Color,MOUSE,

Java项目要不要部署在Docker里?

部署Java项目有很多种方式,传统的方式是直接在物理机或虚拟机上部署应用,但为什么现在容器化部署变得越来越流行, 个人觉得原因有以下几个: 1、 环境一致性:使用Docker可以确保开发、测试和生产环境的一致性&#xff…

传感器类总结(一)MPU9250 3-2程序关于IIC的底层程序

关于IIC的逻辑和底层协议可以看之前总结的 #IIC 通信协议 1、读写数据 1.1、写数据 发送N个字节程序的流程: 1、发送起始信号 2、发送从机地址和写 3、等待从机发回应答信号 4、发送第一字节数据 等待应答 5、发送下一字节数据 等带应答或非应答信号 6、发送停止信号停止发送…

D365:Debug

文章目录 前言一、附加进程二、选择进程三、DebugDebug进ApplicationSuite文件方法一方法二 前言 使用 Visual Studio 调试 D365 一、附加进程 点击路径 Debug > Attach to Process 二、选择进程 勾选下面的Show processes from all users,选择w3wp.exe,点击At…

#nlp|jieba分词词性对照

jieba词性对照表 a 形容词 ad 副形词 ag 形容词性语素 an 名形词 b 区别词 c 连词 d 副词 df dg 副语素 e 叹词 f 方位词 g 语素 h 前接成分 i 成语 j 简称略称 k 后接成分 l 习用语 m 数词 mg mq 数量词 n 名词 ng 名词性语素 nr 人名 nrfg nrt ns 地名 nt 机构团体名 nz 其他…

HCIA学习第六天:OSPF:开放式最短路径优先协议

OSPF:开放式最短路径优先协议 无类别链路状态IGP动态路由协议 1.距离矢量协议:运行距离矢量协议的路由器会周期性的泛洪自己的路由表。通过路由的交互,每台路由器从相邻的路由器学习到路由,并且加载进自己的路由表中&#xff1b…

git学习及简单maven打包

前提: 已经有远程仓库地址 和账号密码了 已经安装git了 1.本地新建文件夹A用作本地仓库 2.在A文件夹下右键打开GIT BASH HERE 3.创建用户和密码,方便追踪提交记录 git config --global user.email “caoqingqing0108” //创建邮箱 git config --global …

电视盒子哪款好?年货节必看电视盒子排名

电视盒子哪款好?电视盒子是每天都会使用到的,和电视机是好搭档,但很多朋友买电视盒子的时候会踩雷,像虚标配置、偷工减料、无售后等,近来年货节大促购入电视盒子的消费者增多,小编这次要来分享的是好评度最…

centos搭建ftp踩坑记录

ftp服务器搭建参考b站视频 第1坑,开放端口后仍然无法连接: 这里不仅需要在防火墙打开20和21端口,还需要打开被动访问所使用的端口,也就是在配置文件vsftpd.conf中指定的被动访问接收端口。 pasv_enableYES pasv_min_port40000 p…

【Java】Springboot入门

学习目标 基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发 一、SpringBoot简介 1. 入门案例 问题导入 SpringMVC的HelloWord程序大家还记得吗? SpringBoot是由Pivotal团队提供的全新框架&…