如果美术图片的长宽使用的是是非2的N次方的大小,那么当我们使用D3DXCreateTextureFromFileEx创建纹理时,宽高都设置的是D3DX_DEFAULT,D3D会默认把纹理创建为2的N次方,这会导致纹理被放大或者被缩小,总之是被拉伸了。但是使用时又会按原始大小使用,相当于又把创建的纹理缩小或者放大。这会导致比如说图片模糊啊,坐标偏移啊。各种诡异事情发生。
此问题有两种解决方案:
1.让美工把图片修改为2的n次方大小;
2.宽高传参为D3DX_DEFAULT_NONPOW2。
其中,解决方案2可行性不高,因为这需要显卡的支持,我们不可能强迫客户去更换显卡,只能我们去兼容各种显卡。因此剩下的就只有自己改图了。