我试图通过surface<void, 2>
写一个二维cudaArray。
该数组具有通道格式{32, 32, 0, 0, cudaChannelFormatKindFloat}
或更简单地说,保留vector2
s。
我正在尝试在整数坐标vector2
指示的位置向表面写(x, y)
。以下效果很好:
// write the float2 vector d to outSurf
surf2Dwrite(d.x, outSurf, x * sizeof(float2), y);
surf2Dwrite(d.y, outSurf, x * sizeof(float2) + sizeof(float), y);
然而,如果我这样做
surf2Dwrite(d, outSurf, x * sizeof(float2), y);
仅写入向量的x
组件。 这种略微不直观的行为是什么原因?
答案 0 :(得分:2)
我发现很难相信这些surf2Dwrite调用中的任何一个实际上都按照你的想法行事。要写一个float2
我会用这个:
surf2Dwrite<float2>(d, outSurf, x, y);
x和y参数是您要写入的曲面上的坐标,template参数告诉调用所访问类型的大小。