CUDA-Runtime-API 纹理参考管理
cudaCreateChannelDesc
使用方法
// Allocate CUDA array in device memory
cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
定义
struct cudaChannelFormatDesc {
int x, y, z, w;
enum cudaChannelFormatKind f;
};
__host__cudaChannelFormatDesc cudaCreateChannelDesc ( int x, int y, int z, int w, cudaChannelFormatKind f )
cudaChannelFormatKind
各通道数据类型设置
cudaChannelFormatKindSigned = 0
Signed channel format
cudaChannelFormatKindUnsigned = 1
Unsigned channel format
cudaChannelFormatKindFloat = 2
Float channel format
cudaChannelFormatKindNone = 3
No channel format
cudaMallocArray
使用方法
cudaArray* cuArray;
cudaMallocArray(&cuArray, &channelDesc, y, x);
依照cudaCreateChannelDesc
的设定,在device上分配一个数组。
cudaTextureDesc结构体
定义如下:
struct cudaTextureDesc {
enum cudaTextureAddressMode
addressMode[3];
enum cudaTextureFilterMode
filterMode;
enum cudaTextureReadMode
readMode;
int sRGB;
int normalizedCoords;
unsigned int maxAnisotropy;
enum cudaTextureFilterMode
mipmapFilterMode;
float mipmapLevelBias;
float minMipmapLevelClamp;
float maxMipmapLevelClamp;
};
cudaTextureDesc::addressMode 纹理寻址模式
enum cudaTextureAddressMode {
cudaAddressModeWrap = 0, // Wrapping address mode
cudaAddressModeClamp = 1, // Clamp to edge address mode
cudaAddressModeMirror = 2, // Mirror address mode
cudaAddressModeBorder = 3 // Border address mode
};
cudaTextureDesc::filterMode
从纹理获取时要使用的过滤模式
enum cudaTextureFilterMode {
cudaFilterModePoint = 0,
cudaFilterModeLinear = 1
};
cudaTextureDesc :: readMode
指定是否应将整数数据转换为浮点数。cudaTextureReadMode定义为:
enum cudaTextureReadMode {
cudaReadModeElementType = 0,
cudaReadModeNormalizedFloat = 1
};
cudaTextureDesc::normalizedCoords
是否将纹理坐标标准化
cudaBindTextureToArray
将数据与纹理绑定