openCL:如何将 uint4 转换为 uchar4

openCL: how to convert uint4 to uchar4?

本文关键字:转换 uchar4 uint4 openCL      更新时间:2023-10-16

我想uint4向量转换为uchar4向量,但我不确定这样做的正确方法是什么:

const uint4 res;
res = read_imageui(input, sampler, pos_read);
output[p]   = res           // error: assigning to '__global uchar4' from incompatible type 'const uint4'; 
output[p]   = (uchar4)res;  // error: invalid conversion between ext-vector type 'uchar4' and 'uint4'
output[p].x = (uchar)res.x; // 
output[p].y = (uchar)res.y; //
output[p].z = (uchar)res.z; // works, but is this the only/right way to go?
output[p].w = (uchar)res.w; //

使用它进行简单的转换:

output[p] = convert_uchar4(res); //For a simple conversion

或者其中之一进行手工转换:

output[p] = convert_uchar4<_sat><_roundingMode>(res); //For a precise conversion

其中,<_sat>是可选的,用于定义值超出范围时是否饱和。<_roundingMode>也是可选的,可以是_rte(最接近的偶数),_rtp(朝向inf),_rtn(朝向-inf)或_rtz(朝零)

如有其他问题,请参阅 OpenCL 参考卡第 5 页。或 OpenCL 的类型转换