opengl纹理颠倒,rgb通道错位等。详解rgba,bgra,argb等内存序

本文探讨了OpenGL中纹理颠倒的原因,指出输入内存数据的字节序与纹理坐标系的差异导致这一现象。同时,也分析了RGB通道错位的问题,通常源于纹理格式指定不正确。此外,讨论了在Windows平台上ARGB与BGRA内存序的混淆,揭示了小端模式在其中的作用。最后,建议使用明确的字节序命名规范以避免混淆。
摘要由CSDN通过智能技术生成

一、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一样,用字节序命名的比较好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值