作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用纹理对象来访问 PGM 图像像素。我的愿望是让纹理获取给定坐标中的像素值,如果超出边界,则为 0。
这是我的纹理描述:
unsigned char *device_input=NULL;
size_t input_pitch;
checkCudaErrors(cudaMallocPitch(&device_input, &input_pitch, sizeof(unsigned char)*IMAGE_WIDTH, IMAGE_HEIGHT));
checkCudaErrors(cudaMemcpy2D(device_input, input_pitch, image, sizeof(unsigned char)*IMAGE_WIDTH, sizeof(unsigned char)*IMAGE_WIDTH, IMAGE_HEIGHT, cudaMemcpyHostToDevice));
cudaResourceDesc resDesc;
memset(&resDesc, 0, sizeof(resDesc));
resDesc.resType = cudaResourceTypePitch2D;
resDesc.res.pitch2D.devPtr = device_input; //
resDesc.res.pitch2D.pitchInBytes = input_pitch;
resDesc.res.pitch2D.width = IMAGE_WIDTH;
resDesc.res.pitch2D.height = IMAGE_HEIGHT;
resDesc.res.pitch2D.desc = cudaCreateChannelDesc<unsigned char>();
cudaTextureDesc texDesc;
memset(&texDesc, 0, sizeof(texDesc));
texDesc.readMode = cudaReadModeElementType;
texDesc.normalizedCoords=false;
texDesc.addressMode[0]=cudaAddressModeBorder;
texDesc.addressMode[1]=cudaAddressModeBorder;
cudaTextureObject_t tex;
cudaCreateTextureObject(&tex, &resDesc, &texDesc, NULL);
tex2D<unsigned char>(tex_inputImage,-100,-100)
tex2D<unsigned char>(tex_inputImage,IMAGE_WIDTH+1,IMAGE_HEIGHT+1)
最佳答案
这是我自己的问题的答案:
该程序在驱动程序版本为 319.32 的机器上运行,显然该驱动程序存在处理 cudaAddressModeBorder
的错误。喜欢 cudaAddressModeClamp
使用法线坐标 ( More on the problem here - check the last couple of replies ) 时。
该错误已在版本 319.49 和 cudaAddressModeBorder
中修复使用归一化和非归一化坐标按预期工作。
关于cuda - cudaAddressModeBorder 是否适用于非标准化坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18922191/
我正在使用纹理对象来访问 PGM 图像像素。我的愿望是让纹理获取给定坐标中的像素值,如果超出边界,则为 0。 这是我的纹理描述: unsigned char *device_input=NULL; s
我是一名优秀的程序员,十分优秀!