UI 图片中带alpha通道问题

该主题包含 3 个回复,有 3 个参与人,并且由 陶仁贤 的头像 陶仁贤1 年, 4 月 前 最后一次更新。

正在查看 4 个帖子 - 1 至 4 (共计 4 条)
  • 作者
    帖子
  • #16070
    kobe发 的头像
    kobe发
    学员
    注册日期: 2015/05/14
    发帖数: 5
    回帖数: 4

    老师你好:
    这里遇到一个比较棘手的问题。我的项目是android的手机游戏。里面差不多有400多个的UI贴图,大部分是带有alpha通道的贴图。UE4中导入带alpha的图是变成DXT5的格式 然而没有带的导入时DXT1的格式。并且用ETC1 方式打包出来后前者体积是后者的5倍。如果直接将图片的所有通道去除,那在游戏里面的效果就太差了,并且我的很多图片是圆形的或者多边形的 但是代码里面是这样的处理
    【Canvas->DrawTile(pGameMode->pGameUI->Loading.Texture, 0, 0, Canvas->SizeX, Canvas->SizeY, 0, 0, 1024, 512);】 也就是只能截取矩形规格的图片。
    有听说可以这样的处理方式:
    程序在读取一个图片的时候,将alpha部分的属性存在一个地方,然后打包只打包不带alpha的部分,等程序运行起来后再判断这个图片是否是需要alpha的属性进行读取。恕小弟才疏学浅,这块shader的部分 都没接触过。具体需要如何去实现?麻烦老师指导一下。谢谢

    #16100
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 358

    这不是前几天unrealopenday提的一个问题么,这是台上的大神回答的方案。这个方案理论上可操作。
    1.打包把这些带alpha的贴图规整到一个文件夹里
    2.每个贴图的alpha可以放到另外一个texture的R通道或者G通道,或者B通道。这样这些alpha信息也可以被压缩。记录好对应关系。
    3.程序读取的时候如果发现是这个特殊文件夹里的贴图,就说明有alpha信息需要填充,那么通过记录好的对应关系找到它的alpha信息。
    4.对texture在内存中进行修改,把alpha的信息填进去。
    5.bingo

    #16119
    kobe发 的头像
    kobe发
    学员
    注册日期: 2015/05/14
    发帖数: 5
    回帖数: 4

    老师 非常感谢!

    #18769
    陶仁贤 的头像
    陶仁贤
    教师
    注册日期: 2014/06/20
    发帖数: 1
    回帖数: 639

    alpha通道极其浪费资源啊。

正在查看 4 个帖子 - 1 至 4 (共计 4 条)

抱歉,回复评论必需登录。