接着之前的内容, 即说对GPU上的各种存储器的优化使用, 今天来到纹理存储.
这个其实我们之前在编程指南中已经说过很多了, 读者也应当对基本用法, 包括经典的纹理引用和较新的纹理对象都应该会使用了....我们主要说一下使用纹理所带来的主要优势.
根据之前的内容, 你已经知道, 纹理可以提供免费的值变换, 和免费的坐标变换, 以及免费的越界处理, 以及, 更加优化的访存/缓存效果....那么此时, 无论是从转换指令本身, 需要占据额外的硬件资源; 还是从编写代码的人的角度, 他需要手写额外的代码行, 都是一种开销....而从8-bit或者16-bit或者其他整数类型转换成float的时候, 吞吐率就只有16条/SM/周期了, 相当于在7.X上转换本身只有常规计算的1/4的性能....不过需要注意的是, 自动的转换是一个"归一化"的过程, 将会从8-bit或者16-bit的有/无符号整数范围映射到[-1.0f, 1.0f]或者[0.0f, 1.0f], 其中包括了1.0f了, 这点使用的时候应当小心