我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了算
我的观点基于以下几点:
若显卡不支持非2的次幂纹理,则:
1:若使用IDirect3DDevice9::CreateTexture创建非2的次幂尺寸图像将失败
2:若使用D3DXCreateTexture创建非2的次幂图像将被扩充成2的次幂
3:若使用D3DXCreateTextureFromFileInMemoryEx创建非2的次幂图像将被扩充成2的次幂(就算用了D3DX_DEFAULT_NONPOW2也没用)
只有一个函数比较特殊:D3DXCreateTextureFromFileEx,用它创建图像可以完美支持非2的次幂图像,但实际游戏中很少用这个函数,故总体上,创建一个非2的次幂纹理,还是显卡说了算,我没找到除了D3DXCreateTextureFromFileEx之外,D3D会帮你做兼容的函数。
对于2D游戏来讲,将纹理扩充成2的次幂将是一个致命打击,特别是对于使用商业资源进行做游戏的人来讲尤其如此。
难怪windows游戏编程大师技巧的作者也认为,用D3D做2D很麻烦。
我想,有用D3D做过2D游戏的朋友,应该会有同感。
求高手指正缺漏。
[解决办法]
哦!明白~~~~~~