2013-10-15 67 views
2

我想uint4向量轉換爲uchar4向量,但我不知道什麼是這樣做的正確方法:openCL:如何將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; // 

回答

3

用這個簡單的轉換:

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

或者其中一個用於手工轉換:

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

其中,<_sat>是可選的,並且定義值是否將被sat當它們超出範圍時被使用。而<_roundingMode>也是可選的,可以_rte(最近偶數),_rtp(朝INF),_rtn(向-INF)或_rtz(接近零)

對於其他問題,請解決該OpenCL Reference Card Page 5。或Conversion of types for OpenCL

相關問題