1

我正在使用 DirectX9,现在我在创建纹理时遇到了问题。我正在使用具有 D3DFMT_DXT1 压缩的 CreateTexture 和 LoadSurfaceFromMemory 函数,我检查了我的显卡的设备上限,并且 D3DPTEXTURECAPS_POW2 和 D3DPTEXTURECAPS_NONPOW2CONDITIONAL 已关闭,我认为这意味着我的显卡支持非两种纹理的幂......我可以使用任何大小的纹理。我的问题是大多数纹理都运行良好(并且它们的大小不是 2 的幂),但在某些情况下不起作用,例如“1228 x 453”,如果我将纹理调整为“1228 x 452”效果很好。这是怎么回事?

对不起我的英语不好!。谢谢。

4

2 回答 2

1

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

于 2013-10-16T15:34:33.780 回答
0

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

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

于 2013-10-16T13:39:18.883 回答