DirectX9和不兼容的纹理大小

时间:2013-10-16 13:01:56

标签: directx textures pow capability

我正在使用DirectX9,现在我遇到纹理创建问题。 我正在使用函数CreateTexture和LoadSurfaceFromMemory与D3DFMT_DXT1压缩,我检查了我的图形卡的设备上限和D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NONPOW2CONDITIONAL关闭,我认为这意味着我的图形卡支持NON Power of Two Textures ...我可以使用任何尺寸的纹理。 我的问题是大多数纹理都运行良好(并且它们的大小不是2的幂),但在某些情况下不起作用,如“1228 x 453”,如果我调整为“1228 x 452”纹理效果很好。 发生了什么事?

抱歉我的英文! 感谢。

2 个答案:

答案 0 :(得分:1)

BCn纹理格式是基于块的。这些块将像素打包成4x4元素的组,因此纹理尺寸必须在4上对齐这些格式。

答案 1 :(得分:0)

不幸的是,这是一个显卡问题。即使该卡声称支持两种纹理的非功率,支持通常也是错误/有限的。

你可以填充纹理并使用子纹理,但最好的方法是构建纹理图集(通常你应该这样做以保存内存带宽)