2

我正在尝试通过surface<void, 2>. 该数组具有通道格式{32, 32, 0, 0, cudaChannelFormatKindFloat},或者更简单地说,保存vector2s。

我正在尝试vector2在整数坐标指示的位置处将 a 写入表面(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向量的分量被写入。这种稍微不直观的行为的原因是什么?

4

1 回答 1

2

我很难相信这些 surf2Dwrite 调用中的任何一个实际上都做了你认为他们做的事情。要写一个float2我会用这个:

surf2Dwrite<float2>(d, outSurf, x, y);

x 和 y 参数是您正在写入的表面上的坐标,模板参数告诉调用正在访问的类型的大小。

于 2011-07-15T11:19:21.237 回答