我正在使用DirectX9,现在我遇到纹理创建问题。 我正在使用函数CreateTexture和LoadSurfaceFromMemory与D3DFMT_DXT1压缩,我检查了我的图形卡的设备上限和D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NONPOW2CONDITIONAL关闭,我认为这意味着我的图形卡支持NON Power of Two Textures ...我可以使用任何尺寸的纹理。 我的问题是大多数纹理都运行良好(并且它们的大小不是2的幂),但在某些情况下不起作用,如“1228 x 453”,如果我调整为“1228 x 452”纹理效果很好。 发生了什么事?
抱歉我的英文! 感谢。
答案 0 :(得分:1)
BCn纹理格式是基于块的。这些块将像素打包成4x4元素的组,因此纹理尺寸必须在4上对齐这些格式。
答案 1 :(得分:0)
不幸的是,这是一个显卡问题。即使该卡声称支持两种纹理的非功率,支持通常也是错误/有限的。
你可以填充纹理并使用子纹理,但最好的方法是构建纹理图集(通常你应该这样做以保存内存带宽)