android,ETC1压缩纹理带alpha通道
天降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行指乱其所为,所以动心忍性,曾益其所不能。
——《孟子》
1,ETC纹理。
opengl2.0的所有android机器支持ETC纹理,但是在opengl1.0中,并不是所有的android机器都支持,所以使用前请检查,机器是否支持etc1纹理。etc1纹理压缩时,抛弃了alpha,所以etc1纹理没有通道。但是人类最大的优点是变通,总会有办法实现的。
etc2纹理压缩格式,是基于opengl3.0以上。并且带alpha通道。
2,转换etc纹理的工具和纹理生成的库。
一个可视化的转换工具: Mali GPU Texture Compression Tool
etc1生成的纹理有两种文件格式,PKM和KTX,给出一个链接关于android的纹理以及PKM和KTX的区别: Android textureCompression:
etc1中的KTX文件有一个现成的开源库,可以直接生成纹理: 链接和下载地址
3,绘制带alpha通道的图片。
1,)实现原理
在opengl2.0中的实现原理是:将一个图片生成两个纹理,一个是rgb,一个rgb中的r存储着图片的alpha数据。在绘制的时候使用纹理单元,将带有alpha数据的rgb做为另个带rgb纹理的alpha。
在opengl1.0中的实现原理:也是生成两个纹理一个是压缩的 rgb,一个是不压缩的纹理,纹理格式是GL_ALHPA.
2,)实现代码部分
opengl2.0,上面的工具有直接的例子,
opengl1.0,纹理混合的代码为:
glActiveTexture(GL_TEXTURE0);glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D, m_pobTexture->getName());glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);//------------------------glActiveTexture(GL_TEXTURE1);glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D, m_pobTexture->getAlphaName());glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS);glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE);glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
其中getName返回的是rgb的压缩纹理,getAlphaName返回的是没有压缩的纹理。
其中需要注意的是:使用完多重纹理之后需要将其他的纹理单元关闭,以及要多每个纹理单元上传纹理坐标
3,《完》
android,ETC1压缩纹理带alpha通道相关推荐
- ETC1压缩纹理格式详解
本来以为,ETC1作为Android 设备的OpenGL标准,开源且最常用的的一种压缩纹理格式,总会有人去翻译一下khronos的文档,读一下代码,给大家作个普及的,不料就是搜不到.没办法,尽管英文不 ...
- 使用IconWorkshop制作带alpha通道的位图
使用IconWorkshop制作带alpha通道的位图 引自:http://www.cnblogs.com/liqilei/archive/2011/01/26/1945787.html 最近在项目中 ...
- UE4带Alpha通道透明效果贴图的相关问题
镂空效果(黑色部分透明):UE4中,一张贴图同时显示color与opacity, 问题一:最初贴图只呈现颜色,应该透明的区域是黑色的 修改步骤如下: ps中魔棒选中黑色区域-反选-右键存储选区-生成a ...
- 带alpha通道的图像合成(Python语言)
我先放代码和结果,再分析过程. 1.实现代码 # coding=utf-8 import numpy as np import cv2 as cv def paste_ROI_to_image(ima ...
- opencv-python读取透明图片(既带alpha通道)
opencv-python读取透明图片 透明图(alpha图) cv2 cv2.imread() 透明图(alpha图) 透明图是PS抠图中常用到的图片形式,能保存为png以及gif格式,相比于普通的 ...
- Unity播放带Alpha通道的视频【WebM+Video Player】(替代播放GIF方案)
在Unity中播放GIF或者动态效果,可以通过Video Player播放带透明通道的WebM视频来实现. 制作带Alpha的MOV视频 制作带Alpha通道的MOV视频有多重方式,如AE.PR.PS ...
- 带alpha通道四通道的图片转成rgb三通道
查看第四通道数值范围,若最大值为255,则归一化到1,再与前三通道相乘,得到叠加透明度的结果
- ETC1压缩纹理图片格式
参考: https://www.khronos.org/registry/DataFormat/specs/1.1/dataformat.1.1.html#ETC1 https://www.khron ...
- 留个档,C# AlphaBlend,带Alpha通道的图片的叠加
网上大部分的算法,都写的太文本化,看起来贼累 留个档,核心算法 bg是 被盖的图层, add是上层的图层 private Color AlphaBlend(Color bg, Color add) { ...
最新文章
- SqlSessionFactoryBean的构建流程
- numpy 打乱 numpy 数组
- java中用字节流读取文本时中文乱码
- kill命令---Linux学习笔记
- Star sky CodeForces - 835C
- Blender建模与游戏换装(转载文)
- php中页面平滑回到顶部代码,原生JS实现平滑回到顶部组件_javascript技巧
- HDU 3062 Party(2-sat题模板+tarjan )
- JAVA HASHMAP 用法
- Python数模笔记-NetworkX(3)条件最短路径
- linux pxe 博客,pxe无人值守linux系统安装
- 重置系统_开课了,如何重置电脑系统?1分钟教会你!
- 利用ros3djs接收pointcloud2在web端显示
- html字体打印效果,基于jQuery实现文字打印动态效果
- Ms Sql Server 2000 个人绿色版 5.62
- ​stp文件转ply
- Revit中项目特别大如何将项目完整的体现在图纸中?
- html打印图片不显示不全,Word里图片显示全打印不全是怎么回事
- 浙江大学软件学院2020年保研上机真题练习
- C语言基础入门48篇_13_关系运算符与关系表达式(等于(==)、不等于(叹=)、大于(>)、小于(<)、小于等于(<=)、大于等于(>=),5==nValue方式避免bug,==不可比较浮点型数据)