我有以下代码行,如果标量不为零,我希望a4的每个组件等于c4的相应组件,否则将其设置为b4的相应组件:
uint4 a4 = select(b4, c4, (uint4)(scalar != 0));
但是,阅读选择的文档,看起来必须为要选择的c4组件设置MSB。
上述行是否正确?我感觉不是。
答案 0 :(得分:1)
这是一个讨厌的小家伙。标量的真值与矢量的真值不匹配。这是尝试在比较时有效支持altivec / SSE风格掩蔽的结果。这是一个已知但未广泛宣传的OpenCL怪癖。
答案 1 :(得分:0)
原来我只需要将第三个参数调整为: (uint4)标量!= 0
这是正确的。