一个非常奇怪的错误:如果我在项目中添加一些特定的代码,我使用的任何纹理都只包含0.即使我没有运行任何添加的代码。
这里的具体代码是nVidia CUDA样本[1]的内核,Bicubic纹理过滤样本,特定于CatMulRom内核。我已将其追溯到其中一个子功能。如果我在那里重置变量,一切都恢复正常。这真的非常奇怪,我不知道它会是什么。添加和使用双三次内核不会产生任何问题。
以下是“修复”问题的更改:
__host__ __device__
float catrom_w1(float a)
{
a = 1; // Fix
return 1.0f + a*a*(-2.5f + 1.5f*a);
}
如果我重置变量,如果我没有使用CatMulRom,它会起作用。如果我尝试使用它,纹理再次为零。有问题的纹理定义如下:
texture<uchar1, 2, cudaReadModeNormalizedFloat> tex;
我已经编辑了模板,希望它可以解决问题,但它仍然存在。
[1] http://developer.download.nvidia.com/compute/cuda/sdk/website/samples.html
答案 0 :(得分:3)
你已经破坏了你的筹码。