请问下这段uniform代码内存对齐问题

image

在看放空的shader入门
说到这段内存对齐的时候我比较蒙蔽
那段代码分配情况 4+4+8 = 16我明白
但是上面那个是如何占用32的
f1_1 原本为4 因为后面是v2 所以补4 就是4+4 = 8
v2是8
f1_2按照规则总大小为最大成员的倍数 所以4补4为8
= =我咋都算不到32位呢

来个大佬解惑一下

参数的顺序问题

image
你截图上面有句话,说明UBO分配的内存必为16的倍数;
image
然后最后一句话有误,到f1_2一共占了20个字节,没有说补齐最大成员这一说,是v2这里需要保持前面是8字节的倍数(自身占8个),所以f1_1v2才会浪费4个字节;

可是v2 8字节不就是前面f1_1 4字节的倍数么

你咋还看反了,是要求f1_1(4)是v2(8)的倍数,不足则补 :rofl:

:joy:原来是这样 那我就理解了