Очень странная ошибка: если я добавляю какой-то определенный код в свой проект, любые используемые мной текстуры содержат только 0. Даже когда я не запускаю какой-либо добавленный код.
Конкретный код здесь - это ядра образца nVidia CUDA [1], образца фильтрации бикубической текстуры, в частности ядра 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