可以用整数索引CUDA纹理

时间:2011-08-29 17:29:39

标签: cuda textures

就像话题说的那样。可以使用整数坐标访问CUDA纹理吗? 离。

tex2D(myTex, 1, 1);

我想在纹理中存储浮点值,并将其用作我的帧缓冲区。 我将它传递给OpenGL而不是在屏幕上渲染。

这种寻址是否可行?我不想在像素之间进行插值。我想从确切的指定点获得价值。

2 个答案:

答案 0 :(得分:2)

如果要在不使用任何特定于纹理的操作(如插值)的情况下使用纹理缓存,可以使用tex1Dfetch()。这允许您使用整数进行索引。

大小限制为2 ^ 27个元素,因此您可以使用浮点数访问512 MB,或使用int2访问1 GB [也可以通过__hiloint2double()来检索双精度数据)。可以通过在覆盖数据的顶部映射多个纹理来访问更大的数据。

您必须将任何多维数组访问映射到tex1Dfetch()支持的一维数组。我总是使用简单的C宏。

答案 1 :(得分:2)

注意:当对多维纹理使用0.5偏移表示法时,实际上没有插值(实际像素值从(0.5,0.5)开始)。如果您真的很担心,请设置舍入到最接近的点,而不是默认的双线性。

如果使用1D纹理(当基础数据为2D时),则由于其他维度中缺少数据局部性,可能会失去性能。