DirectX9和不兼容的纹理大小

DirectX9和不兼容的纹理大小,directx,textures,pow,capability,Directx,Textures,Pow,Capability,我正在使用DirectX9,现在我在纹理创建方面遇到了问题。 我在D3DFMT_DXT1压缩中使用CreateTexture和LoadSurfaceFromMemory函数,我检查了我的图形卡和D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NonPow2的设备封盖,我认为这意味着我的图形卡支持两种纹理的非幂。。。我可以使用任何尺寸的纹理。 我的问题是大多数纹理都工作得很好(它们的大小不是二的幂),但在某些情况下不工作,如“1228 x 453”,如果我调整到“1228

我正在使用DirectX9,现在我在纹理创建方面遇到了问题。 我在D3DFMT_DXT1压缩中使用CreateTexture和LoadSurfaceFromMemory函数,我检查了我的图形卡和D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NonPow2的设备封盖,我认为这意味着我的图形卡支持两种纹理的非幂。。。我可以使用任何尺寸的纹理。 我的问题是大多数纹理都工作得很好(它们的大小不是二的幂),但在某些情况下不工作,如“1228 x 453”,如果我调整到“1228 x 452”,纹理工作得很好。 发生什么事了

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

不幸的是,这是一个图形卡问题。即使该卡声称支持两种纹理的非增强功能,支持也往往有缺陷/有限


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

不幸的是,这是一个图形卡问题。即使该卡声称支持两种纹理的非增强功能,支持也往往有缺陷/有限


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

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

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

+1:<代码>运行时将不允许应用程序使用DXTn格式创建曲面,除非曲面尺寸是4的倍数。这适用于屏幕外的平面、渲染目标、2D纹理、立方体纹理和体积纹理。Yeah!你说得对,因为纹理压缩我必须将纹理转换为4的倍数。谢谢我现在节省了很多内存。这可能有点脱离上下文,因为两个纹理的非增强功能主要用于GUI,但是如果纹理用于3D网格,请不要忘记生成mipmap链。这对性能(内存带宽)和质量(锯齿和莫尔)非常重要。+1:<代码>运行时将不允许应用程序使用DXTn格式创建曲面,除非曲面尺寸是4的倍数。这适用于屏幕外的平面、渲染目标、2D纹理、立方体纹理和体积纹理。Yeah!你说得对,因为纹理压缩我必须将纹理转换为4的倍数。谢谢我现在节省了很多内存。这可能有点脱离上下文,因为两个纹理的非增强功能主要用于GUI,但是如果纹理用于3D网格,请不要忘记生成mipmap链。这对性能(内存带宽)和质量(锯齿和莫尔)很重要。绝对正确,但这里的问题是另一回事。因此,如果他尝试1228x454,它将不起作用。绝对正确,但这里的问题是另一回事。因此,如果他尝试1228 x 454,它将不起作用。