1

如果我将所有颜色编码为一个浮点值(RGB):

//Each Channels are from 0 - 255
red << 16 | green << 8 | blue;

如何在 AGAL 中检索这些颜色通道?似乎没有任何位运算符。

4

2 回答 2

4

您不需要这样做。在顶点流中使用 BYTES_4 输入,您的打包颜色将自动为您解包!纹理做同样的事情。无论如何,常量寄存器始终是 4 个浮点数。您应该开始将颜色视为具有 [0..1] 范围内的 4 个值的 4 个向量。

也就是说,请记住位移位只是除法和截断。x>>1 与 trunc(x/2.0) 相同。AGAL 没有截断,只有小数部分,对于正 x,trunc(x) 与 x-frac(x) 相同。

于 2012-02-01T06:40:13.183 回答
1

这是一个描述的案例,我发现 AGAL 中的按位运算在从 RGB 颜色通道中解压缩内容时很有用。它假设您已经知道按位运算的算术等价物:http: //forum.alternativaplatform.com/posts/list/10343.page#78542

模数可以在 AGAL 中完成,其中 a%b = frc(a/b)*b 。例如,因为位掩码 &1, &3 运算只是分别针对 2 和 4 的模运算(即 &(modDivisor-1) ),因此您可以使用它们。左移/右移只是乘以/除以 2 (2^n) 的幂,其中 n 是移位的位数。或'|' 运算只是简单的加法,当然,在左移数字之后..

于 2012-11-21T05:19:57.397 回答