如果我将所有颜色编码为一个浮点值(RGB):
//Each Channels are from 0 - 255
red << 16 | green << 8 | blue;
如何在AGAL中检索这些颜色通道?似乎没有任何按位运算符。
答案 0 :(得分:4)
你不应该这样做。在顶点流中使用BYTES_4输入,您的打包颜色将自动解压缩!纹理做同样的事情。无论如何,常量寄存器总是4个浮点数。您应该开始将颜色视为4个向量,在[0..1]范围内有4个值。
那就是说,记住一点移位只是一个除法和截断。 x&gt;&gt; 1与trunc(x / 2.0)相同。 AGAL没有截断而是小数部分,而trunc(x)与正x的x-frac(x)相同。
答案 1 :(得分:1)
这是一个描述的情况,我发现AGAL中的按位操作在从RGB颜色通道解包东西时很有用。它假设您已经知道了逐位运算的算术等价物: http://forum.alternativaplatform.com/posts/list/10343.page#78542
模量可以在AGAL中完成,其中%b = frc(a / b)* b。例如,由于位掩码&amp; 1,&amp; 3 oeprations分别只是2和4的模数运算(即&amp;(modDivisor-1)),你可以使用它们。向左/向右移动简单地乘以2除以2(2 ^ n)的幂,其中n是移位的位数。或者'|'在转移左边的数字之后,操作只是添加,当然..