一、opengl纹理颠倒的原因
opengl的顶点坐标为范围 [-1,1],纹理坐标范围 [0,1],但是经常遇到这样一个问题,顶点绑定窗口左下角(-1,-1),纹理绑定为左下角(0,0),结果纹理是倒置的。
实际上,opengl说的纹理左下角为(0,0),是说输入的数据,第一个字节应该是左下角,而大多数情况,输入的内存数据都是从左上角开始的,所以,需要将纹理进行倒置
二、opengl纹理rgb通道错位
纹理指定的格式,与实际的格式不对,比如本来是BGRA,结果指定成了RGBA。
三、rgba,bgra,argb内存序
经常遇到这样的问题,在windows上,从显存拷贝的argb的图片,存到文件,结果成BGRA了。
实际上,在windows上存储的格式就是B、G、R、A的顺序的,那windows为啥把它叫ARGB呢?
因为windows是小端模式,从内存读到32位的寄存器,就变成ARGB了。
所以,很多代码在命名时很混乱,比如libyuv,明明是BGRA,结果要使用ARGB的函数。
个人感觉,还是像opengl一样,用字节序命名的比较好