c++ - openCL:如何将 uint4 转换为 uchar4?

标签 c++ type-conversion opencl

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

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 Reference Card Page 5 .或者 Conversion of types for OpenCL

关于c++ - openCL:如何将 uint4 转换为 uchar4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19383790/

相关文章:

c++ - 如何在循环中访问数组对象的成员函数

c - 为什么将某个short 转换为double 等于4004 位数字?

java - Vaadin:为 ListSelect 使用自定义转换器

python - PyOpenCL 与 Python 多处理?

c++ - 为什么 std::cin 的提取器操作符等待用户输入?

c++ - 禁止类复制和分配的宏。谷歌-vs- Qt

c++ - SDL 窗口在启动时关闭并返回 0

c++ - 如何为同一类型提供隐式和显式转换 ctr?

c++ - 调用任何入队命令时 OpenCL CL_INVALID_COMMAND_QUEUE

c++ - float4 - 乘加 - 性能技巧 OpenCL